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 相关文章推荐
python3.3教程之模拟百度登陆代码分享
Jan 16 Python
Python实现多进程共享数据的方法分析
Dec 04 Python
详解Python nose单元测试框架的安装与使用
Dec 20 Python
Python实现聊天机器人的示例代码
Jul 09 Python
pandas 按照特定顺序输出的实现代码
Jul 10 Python
浅谈python标准库--functools.partial
Mar 13 Python
Python函数装饰器原理与用法详解
Aug 16 Python
python3中的eval和exec的区别与联系
Oct 10 Python
windows支持哪个版本的python
Jul 03 Python
Python Flask异步发送邮件实现方法解析
Aug 01 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
Aug 24 Python
python如何进行基准测试
Apr 26 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实现验证码功能
2006/10/09 PHP
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
php面向对象 字段的声明与使用
2012/06/14 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
2014/06/26 PHP
php修改数组键名的方法示例
2017/04/15 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
浏览器页面区域大小的js获取方法
2013/09/21 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
canvas绘制七巧板
2017/02/03 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
vue 中的keep-alive实例代码
2018/07/20 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
2019/01/18 jQuery
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
Python 文件重命名工具代码
2009/07/26 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
详解用python实现简单的遗传算法
2018/01/02 Python
Python进程间通信Queue实例解析
2018/01/25 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
python按键按住不放持续响应的实例代码
2019/07/17 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
Python帮你识破双11的套路
2019/11/11 Python
金宝贝童装官网:Gymboree
2016/08/31 全球购物
个人现实表现材料
2014/02/04 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
学习十八大的心得体会
2014/09/01 职场文书
2014年最新大专生职业生涯规划书范文
2014/09/13 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
高三英语复习计划
2015/01/19 职场文书
2015年小学体育工作总结
2015/05/22 职场文书