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在hadoop上跑起来
Jan 27 Python
Python操作使用MySQL数据库的实例代码
May 25 Python
浅谈Python实现2种文件复制的方法
Jan 19 Python
python脚本监控Tomcat服务器的方法
Jul 06 Python
使用Flask集成bootstrap的方法
Jul 24 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
Oct 11 Python
Python获取对象属性的几种方式小结
Mar 12 Python
使用python客户端访问impala的操作方式
Mar 28 Python
解决Python发送Http请求时,中文乱码的问题
Apr 30 Python
python用Tkinter做自己的中文代码编辑器
Sep 07 Python
Django 用户认证Auth组件的使用
Nov 30 Python
Django如何创作一个简单的最小程序
May 12 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.ini 配置文件的深入解析
2013/06/17 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
jQuery技巧大放送 学习jquery的朋友可以看下
2009/10/14 Javascript
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
使用jquery实现简单的ajax
2013/07/08 Javascript
jquery ready函数、css函数及text()使用示例
2013/09/27 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
JavaScript入门基础
2015/08/12 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
WebPack基础知识详解
2017/01/16 Javascript
Vue列表页渲染优化详解
2017/07/24 Javascript
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
vue父组件向子组件动态传值的两种方法
2017/11/11 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
2018/07/05 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
浅析Vue下的components模板使用及应用
2019/11/27 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
2020/04/04 jQuery
Python抓取百度查询结果的方法
2015/07/08 Python
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
python实现QQ邮箱/163邮箱的邮件发送
2019/01/22 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
时尚孕妇装:HATCH Collection
2019/09/24 全球购物
2015年社区环境卫生工作总结
2015/04/21 职场文书
卫生主题班会
2015/08/14 职场文书
Python机器学习之底层实现KNN
2021/06/20 Python
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL