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列表与元组详解实例
Nov 01 Python
简介Django中内置的一些中间件
Jul 24 Python
Python中第三方库Requests库的高级用法详解
Mar 12 Python
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 Python
Python数据结构与算法之完全树与最小堆实例
Dec 13 Python
python删除过期log文件操作实例解析
Jan 31 Python
python随机取list中的元素方法
Apr 08 Python
Python 获取主机ip与hostname的方法
Dec 17 Python
python实现倒计时小工具
Jul 29 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
python 简单的调用有道翻译
Nov 25 Python
如何使用Python对NetCDF数据做空间相关分析
Apr 21 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
Uchome1.2 1.5 代码学习 common.php
2009/04/24 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
PHP判断变量是否为0的方法
2014/02/08 PHP
PHP使用内置dir类实现目录遍历删除
2015/03/31 PHP
php按单词截取字符串的方法
2015/04/07 PHP
PHP消息队列用法实例分析
2016/02/12 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
2016/04/15 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
用于table内容排序
2006/07/21 Javascript
显示js对象所有属性和方法的函数
2009/10/16 Javascript
js DOM模型操作
2009/12/28 Javascript
jQuery EasyUI API 中文文档 - Form表单
2011/10/06 Javascript
jquery插件制作 提示框插件实现代码
2012/08/17 Javascript
Javascript 命名空间模式
2013/11/01 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
2016/01/20 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
2016/12/14 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
jQuery轻松实现无缝轮播效果
2017/03/22 jQuery
微信小程序 开发之全局配置
2017/05/05 Javascript
Vue实现简单分页器
2018/12/29 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
JS实现可切换图片的幻灯切换效果示例
2019/05/24 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
[54:41]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VGJ.T VS paiN
2018/03/31 DOTA
[51:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
《会走路的树》教后反思
2014/04/19 职场文书
助学感谢信范文
2015/01/21 职场文书
活动简报范文
2015/07/22 职场文书
javascript实现计算器功能详解流程
2021/11/01 Javascript