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的ORM框架SQLObject入门实例
Apr 28 Python
Python的类实例属性访问规则探讨
Jan 30 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
May 03 Python
Python之列表的插入&替换修改方法
Jun 28 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
padas 生成excel 增加sheet表的实例
Dec 11 Python
python读取csv和txt数据转换成向量的实例
Feb 12 Python
用python3 返回鼠标位置的实现方法(带界面)
Jul 05 Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 Python
如何通过Python实现RabbitMQ延迟队列
Nov 28 Python
Django后端按照日期查询的方法教程
Feb 28 Python
python中pd.cut()与pd.qcut()的对比及示例
Jun 16 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
Zerg兵种介绍
2020/03/14 星际争霸
用PHP实现图象锐化代码
2007/06/14 PHP
PHP 写文本日志实现代码
2010/05/18 PHP
php 面向对象的一个例子
2011/04/12 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
编写高性能的JavaScript 脚本的加载与执行
2010/04/19 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
2015/04/13 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
javascript实现输出指定行数正方形图案的方法
2015/08/03 Javascript
多个js毫秒倒计时同时进行效果
2016/01/05 Javascript
Bootstrap整体框架之JavaScript插件架构
2016/12/15 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
微信小程序 css使用技巧总结
2017/01/09 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
JavaScript异步加载问题总结
2018/02/17 Javascript
详解Angular6.0使用路由步骤(共7步)
2018/06/29 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
Python Learning 列表的更多操作及示例代码
2018/08/22 Python
Python判断是否json是否包含一个key的方法
2018/12/31 Python
Python帮你识破双11的套路
2019/11/11 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
环法自行车赛官方商店:Le Tour de France
2017/08/27 全球购物
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
文言文形式的学生求职信
2013/12/03 职场文书
思品教学工作总结
2015/08/10 职场文书
2016年国陪研修感言
2015/11/18 职场文书
《多彩的民间艺术》教学反思
2016/02/16 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
浅谈Python基础之列表那些事儿
2021/05/11 Python
mysql事务对效率的影响分析总结
2021/10/24 MySQL