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 cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
Feb 18 Python
Numpy array数据的增、删、改、查实例
Jun 04 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
Python网页正文转换语音文件的操作方法
Dec 09 Python
树莓派与PC端在局域网内运用python实现即时通讯
Jun 22 Python
python文档字符串(函数使用说明)使用详解
Jul 30 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
Nov 30 Python
python-OpenCV 实现将数组转换成灰度图和彩图
Jan 09 Python
解决ROC曲线画出来只有一个点的问题
Feb 28 Python
Python 读取位于包中的数据文件
Aug 07 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
Aug 22 Python
基于Python爬取51cto博客页面信息过程解析
Aug 25 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 和 MySQL 基础教程(三)
2006/10/09 PHP
轻松修复Discuz!数据库
2008/05/03 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
2010/06/11 PHP
Function eregi is deprecated (解决方法)
2013/06/21 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
2020/08/06 PHP
javascript基本语法分析说明
2008/06/15 Javascript
javascript 面向对象编程基础 多态
2009/08/21 Javascript
JavaScript中也使用$美元符号来代替document.getElementById
2010/06/19 Javascript
javascript字符串拼接的效率问题
2010/12/25 Javascript
jQuery判断元素是否是隐藏的代码
2011/04/24 Javascript
jQuery EasyUI API 中文文档 - Draggable 可拖拽
2011/09/29 Javascript
js如何实现设计模式中的模板方法
2013/07/23 Javascript
jQuery对下拉框,单选框,多选框的操作
2014/02/21 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
基于JavaScript实现轮播图原理及示例
2020/04/10 Javascript
Bootstrap table表格初始化表格数据的方法
2018/07/25 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
2020/03/12 Javascript
JS PHP字符串截取函数实现原理解析
2020/08/29 Javascript
详解使用Python处理文件目录的相关方法
2015/10/16 Python
python线程池threadpool使用篇
2018/04/27 Python
python爬取个性签名的方法
2018/06/17 Python
Django添加feeds功能的示例
2018/08/07 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
python 命令行传入参数实现解析
2019/08/30 Python
Python基于Faker假数据构造库
2020/11/30 Python
程序员机试试题汇总
2012/03/07 面试题
建筑工程技术应届生求职信
2013/11/17 职场文书
大学生创业计划书的用途
2014/01/08 职场文书
幼儿教师个人总结
2015/02/05 职场文书
2016年世界人口日宣传活动总结
2016/04/05 职场文书
详细聊聊vue中组件的props属性
2021/11/02 Vue.js