celery在python爬虫中定时操作实例讲解


Posted in Python onNovember 27, 2020

使用定时功能对于我们想要快速获取某个数据来说,是一个非常好的方法。这样我们就不用苦苦守在电脑屏幕前,只为蹲到某个想要的东西。在之前我们已经讲过time函数进行定时操作,这算是time函数的比较基础的一个用法了。其实定时功能同样可以用celery实现,具体的方法我们往下看:

爬虫由于其特殊性,可能需要定时做增量抓取,也可能需要定时做模拟登陆,以防止cookie过期,而celery恰恰就实现了定时任务的功能。在上述基础上,我们将`tasks.py`文件改成如下内容

from celery import Celery
app = Celery('add_tasks', broker='redis:''//223.129.0.190:6379/2', backend='redis:''//223.129.0.190:6379/3')
app.conf.update(
  # 配置所在时区
  CELERY_TIMEZONE='Asia/Shanghai',
  CELERY_ENABLE_UTC=True,
  # 官网推荐消息序列化方式为json
  CELERY_ACCEPT_CONTENT=['json'],
  CELERY_TASK_SERIALIZER='json',
  CELERY_RESULT_SERIALIZER='json',
  # 配置定时任务
  CELERYBEAT_SCHEDULE={
    'my_task': {
      'task': 'tasks.add', # tasks.py模块下的add方法
      'schedule': 60,   # 每隔60运行一次
      'args': (23, 12),
    }
  }
)
@app.task
def add(x, y):
return x + y

然后先通过`ctrl+c`停掉前一个worker,因为我们代码改了,需要重启worker才会生效。我们再次以`celery -A tasks worker -l info`这个命令开启worker。

这个时候我们只是开启了worker,如果要让worker执行任务,那么还需要通过beat给它定时发送,我们再开一个命令行,切换到项目根目录,通过

celery beat -A tasks -l info

celery beat v3.1.25 (Cipater) is starting. 

__ - ... __ - _

Configuration ->
. broker -> redis://223.129.0.190:6379/2
. loader -> celery.loaders.app.AppLoader
. scheduler -> celery.beat.PersistentScheduler
. db -> celerybeat-schedule
. logfile -> [stderr]@%INFO
. maxinterval -> now (0s)
[2017-05-19 15:56:57,125: INFO/MainProcess] beat: Starting...

这样就表示定时任务已经开始运行了。

到此这篇关于celery在python爬虫中定时操作实例讲解的文章就介绍到这了,更多相关celery如何在python爬虫中进行定时操作内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中实现php的var_dump函数功能
Jan 21 Python
python自定义类并使用的方法
May 07 Python
Python脚本文件打包成可执行文件的方法
Jun 02 Python
python使用pil库实现图片合成实例代码
Jan 20 Python
python pyheatmap包绘制热力图
Nov 09 Python
python 实现数字字符串左侧补零的方法
Dec 04 Python
Python数据类型之Set集合实例详解
May 07 Python
python批量处理文件或文件夹
Jul 28 Python
Python 实现Numpy中找出array中最大值所对应的行和列
Nov 26 Python
python安装后的目录在哪里
Jun 21 Python
Python3实现建造者模式的示例代码
Jun 28 Python
python热力图实现简单方法
Jan 29 Python
python输出国际象棋棋盘的实例分享
Nov 26 #Python
Django多个app urls配置代码实例
Nov 26 #Python
python Xpath语法的使用
Nov 26 #Python
python模拟点击玩游戏的实例讲解
Nov 26 #Python
Python批量修改xml的坐标值全部转为整数的实例代码
Nov 26 #Python
Django filter动态过滤与排序实现过程解析
Nov 26 #Python
python中用ctypes模拟点击的实例讲解
Nov 26 #Python
You might like
PHP类的使用 实例代码讲解
2009/12/28 PHP
php mysql 判断update之后是否更新了的方法
2012/01/10 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
CI框架中zip类应用示例
2014/06/17 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
开启PHP的伪静态模式
2015/12/31 PHP
jquery下操作HTML控件的实现代码
2010/01/12 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
2010/12/28 Javascript
IE6 fixed的完美解决方案
2011/03/31 Javascript
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
原生javaScript实现图片延时加载的方法
2014/12/22 Javascript
jQuery判断数组是否包含了指定的元素
2015/03/10 Javascript
JS显示表格内指定行html代码的方法
2015/03/31 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
使用VueCli3+TypeScript+Vuex一步步构建todoList的方法
2019/07/25 Javascript
在pycharm中开发vue的方法步骤
2020/03/04 Javascript
[01:22]DOTA2神秘商店携大量周边降临完美大师赛
2017/11/07 DOTA
用python写的一个wordpress的采集程序
2016/02/27 Python
django 实现简单的插入视频
2020/04/07 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
Python API 操作Hadoop hdfs详解
2020/06/06 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
JMS中Topic和Queue有什么区别
2013/05/15 面试题
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
小学教师的自我评价范例
2013/10/31 职场文书
如何写一份好的自荐信
2014/01/02 职场文书
物流仓管员工作职责
2014/01/06 职场文书
国税会议欢迎词
2014/01/16 职场文书
庆元旦文艺演出主持词
2014/03/27 职场文书
师德师风培训感言
2015/08/03 职场文书
Nginx HTTP跳转至HTTPS
2022/05/15 Servers