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的源码来解析Python下的freeblock
May 11 Python
合并百度影音的离线数据( with python 2.3)
Aug 04 Python
python list格式数据excel导出方法
Oct 31 Python
python+PyQT实现系统桌面时钟
Jun 16 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
Dec 22 Python
对Python3 序列解包详解
Feb 16 Python
Python中函数的基本定义与调用及内置函数详解
May 13 Python
python的常见矩阵运算(小结)
Aug 07 Python
PyTorch: 梯度下降及反向传播的实例详解
Aug 20 Python
Python基础之变量基本用法与进阶详解
Jan 03 Python
利用python绘制数据曲线图的实现
Apr 09 Python
python反扒机制的5种解决方法
Feb 06 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对gzip文件或者字符串解压实例参考
2008/07/25 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
PHP提高编程效率的20个要点
2015/09/23 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
php验证码生成器
2017/05/24 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
2014/08/20 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
使用javascript实现雪花飘落的效果
2015/01/13 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
JavaScript使用cookie实现记住账号密码功能
2015/04/27 Javascript
javascript数组去重的六种方法汇总
2015/08/16 Javascript
javascript实现省市区三级联动下拉框菜单
2015/11/17 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
微信小程序网络封装(简单高效)
2018/08/06 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
vue学习笔记之slot插槽基本用法实例分析
2020/02/01 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
Python 数据库操作 SQLAlchemy的示例代码
2019/02/18 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
Python3实现zip分卷压缩过程解析
2019/10/09 Python
高中政治教学反思
2014/01/18 职场文书
工艺员岗位职责
2014/02/11 职场文书
建议书标准格式
2014/03/12 职场文书
科技节口号
2014/06/19 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
2015年推普周活动总结
2015/03/27 职场文书
vscode中使用npm安装babel的方法
2021/08/02 Javascript
怎么禁用Windows 11快照布局? win11不使用快照布局的技巧
2021/11/21 数码科技
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL