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调用新浪微博API项目实践
Jul 28 Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 Python
python实现给微信公众号发送消息的方法
Jun 30 Python
Python Socket实现简单TCP Server/client功能示例
Aug 05 Python
Python列表(List)知识点总结
Feb 18 Python
Python telnet登陆功能实现代码
Apr 16 Python
python实现在内存中读写str和二进制数据代码
Apr 24 Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 Python
Python Tkinter图形工具使用方法及实例解析
Jun 15 Python
python 进制转换 int、bin、oct、hex的原理
Jan 13 Python
Python数据分析之pandas读取数据
Jun 02 Python
python基础之错误和异常处理
Oct 24 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学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
php截取中文字符串不乱码的方法
2013/12/25 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
2014/07/28 PHP
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
How to Auto Include a Javascript File
2007/02/02 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
Javascript中replace()小结
2015/09/30 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
vue中使用vee-validator完成表单校验方案
2019/11/01 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
在Python的Flask框架中构建Web表单的教程
2016/06/04 Python
详解将Django部署到Centos7全攻略
2018/09/26 Python
python plotly画柱状图代码实例
2019/12/13 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
施华洛世奇日本官网:SWAROVSKI日本
2018/05/04 全球购物
思想品德课教学反思
2014/02/10 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
2014党委书记四风问题对照检查材料思想汇报
2014/09/22 职场文书
党支部2014年度工作总结
2014/12/04 职场文书
英文自荐信范文
2015/03/25 职场文书
预备党员群众意见
2015/06/01 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server