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网络编程之读取网站根目录实例
Sep 30 Python
Django中URL视图函数的一些高级概念介绍
Jul 20 Python
python实现音乐下载器
Apr 15 Python
Django实现登录随机验证码的示例代码
Jun 20 Python
如何在python字符串中输入纯粹的{}
Aug 22 Python
Python常见的pandas用法demo示例
Mar 16 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
Django框架之中间件MiddleWare的实现
Dec 30 Python
基于python修改srt字幕的时间轴
Feb 03 Python
python连接PostgreSQL过程解析
Feb 09 Python
Python Numpy库的超详细教程
Apr 06 Python
Python pyecharts案例超市4年数据可视化分析
Aug 14 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
打造计数器DIY三步曲(上)
2006/10/09 PHP
ThinkPHP模板判断输出Present标签用法详解
2014/06/30 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
javascript检测页面是否缩放的小例子
2013/05/16 Javascript
JavaScript Sort 的一个错误用法示例
2015/03/20 Javascript
JS实现控制表格行文本对齐的方法
2015/03/30 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
Javascript中判断一个值是否为undefined的方法详解
2016/09/28 Javascript
JS中关于事件处理函数名后面是否带括号的问题
2016/11/16 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
2019/08/27 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
python模拟鼠标拖动操作的方法
2015/03/11 Python
python threading模块操作多线程介绍
2015/04/08 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
对json字符串与python字符串的不同之处详解
2018/12/19 Python
python求最大值最小值方法总结
2019/06/25 Python
Django urls.py重构及参数传递详解
2019/07/23 Python
Python threading的使用方法解析
2019/08/28 Python
Python socket模块ftp传输文件过程解析
2019/11/05 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
2019/11/11 Python
Python 读取位于包中的数据文件
2020/08/07 Python
用python计算文件的MD5值
2020/12/23 Python
采购主管工作职责
2013/12/12 职场文书
党员个人思想汇报
2013/12/28 职场文书
教师队伍管理制度
2014/01/14 职场文书
小区物业门卫岗位职责
2014/04/10 职场文书
大二学习计划书范文
2014/04/27 职场文书
学校安全防火方案
2014/06/07 职场文书
管理失职检讨书范文
2015/05/05 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书