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的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
Jun 14 Python
Python快速排序算法实例分析
Nov 29 Python
Python数据拟合与广义线性回归算法学习
Dec 22 Python
Python 一键制作微信好友图片墙的方法
May 16 Python
Python利用matplotlib绘制约数个数统计图示例
Nov 26 Python
在 Pycharm 安装使用black的方法详解
Apr 02 Python
浅谈python出错时traceback的解读
Jul 15 Python
Python 如何创建一个线程池
Jul 28 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
Oct 15 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 Python
Django filter动态过滤与排序实现过程解析
Nov 26 Python
python爬虫之利用selenium模块自动登录CSDN
Apr 22 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
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
一个捕获函数输出的函数
2007/02/14 PHP
PHP四舍五入精确小数位及取整
2014/01/14 PHP
destoon各类调用汇总
2014/06/20 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
2012/08/24 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
实现无刷新联动例子汇总
2015/05/20 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
2015/08/30 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
基于JavaScript实现轮播图原理及示例
2020/04/10 Javascript
JQuery 封装 Ajax 常用方法(推荐)
2017/05/21 jQuery
vue2.0 axios前后端数据处理实例代码
2017/06/30 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
Python正则表达式分组概念与用法详解
2017/06/24 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
Python基于Floyd算法求解最短路径距离问题实例详解
2018/05/16 Python
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
Python编写通讯录通过数据库存储实现模糊查询功能
2019/07/18 Python
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
表达自我的市场:Society6
2018/08/01 全球购物
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
初中女生自我鉴定
2013/12/19 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
房地产活动策划方案
2014/05/14 职场文书
周一给客户的问候语
2015/11/10 职场文书
python中opencv实现图片文本倾斜校正
2021/06/11 Python
详解Java实践之适配器模式
2021/06/18 Java/Android
SpringBoot2零基础到精通之数据库专项精讲
2022/03/22 Java/Android
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL