首页 编程教程正文

python celery异步队列爬虫的实现!!

piaodoo 编程教程 2020-02-22 22:02:26 853 0 python教程

本文来源吾爱破解论坛

本帖最后由 oskfh 于 2019-3-18 17:11 编辑

python celery爬虫简介celery是一个任务队列,同时也支持任务调度,强大的生产者消费者模型附上最新celery文档http://docs.celeryproject.org/en/latest/整个爬虫程序将请求页面, 下载页面, 解释页面分成3个队列, 耦合度较低, 并可以定制化不同程序对应不同数量的worker,资源合理分配main.py中实现用python脚本打开celery服务在celery_app/tasks定义的任务celery实例通过配置文件celeryconfig.py配置
注意启动worker的时候如果需要使用celerybeat的定时功能,需要加上-B的参数
启动一个 download_queue,-A app的位置,-Q 指定启动的队列,worker 消费者,-c 4个并发,-B 启动该队列的celerybeaet,-n 节点名字为downloader,-l log等级为info celery -A tasks.workers -Q download_queue worker -B -l info -c 4 -n downloader
在app.conf.update('CELERYBEAT_SCHEDULE')中能够实现celerybeat的定时任务功能,如果是定时执行,比如某天的某小时,可以使用crontab的方式来完成log中使用dictConfig的方式添加日志,格式比较清晰,后续可以使用该方式来设置日志实例化celery的app的时候,使,能够让celery自动的从celery_app.tasks中寻找tasks,方便用include的方式在tasks中传递了resposne对象,不能使用json的序列化方式,选择pickle的方式在task中,都是用app.send_task("**task", args=(response,),queue="parse_page_list",routing_key="for_page_list") 来把结果交给一个task去完成,同时使用queue和routing_key的方式来,能够把当前任务队列中的内容传递到另一个任务队列,celery能够自动的寻找queue和routing_key匹配的队列去接收任务
本代码可以加强的地方数据库存入时候的去重请求的时候对cookie,headers的处理,refer的处理,代{过}{滤}理ip的处理
使用体会使用celery能够轻松的帮助我们完成一个大型的分布式爬虫,但是如果和scrapy或者是scrapy_redis相比的话,整个程序会变得很凌乱后续的框架,可以使用celery来完成一些细节功能的异步调用,但是目前感觉不能纯粹的依靠celery来完成一个分布式的爬虫, 而是要把celery用在他正确的用途上, 例如注册后发送验证邮件.等等


下面是项目图片:

snipaste_20190318_151820.jpg (115.97 KB, 下载次数: 1)

下载附件  保存到相册

调用种子url的方法

2019-3-18 15:31 上传



snipaste_20190318_152133.jpg (115.56 KB, 下载次数: 0)

下载附件  保存到相册

配置文件1

2019-3-18 15:31 上传



snipaste_20190318_152319.jpg (149.78 KB, 下载次数: 1)

下载附件  保存到相册

配置文件2

2019-3-18 15:31 上传



snipaste_20190318_152546.jpg (59.03 KB, 下载次数: 0)

下载附件  保存到相册

配置文件3

2019-3-18 15:31 上传



snipaste_20190318_152644.jpg (143.86 KB, 下载次数: 0)

下载附件  保存到相册

tasks文件

2019-3-18 15:31 上传



如果你们感兴趣,可以在下面评论,  给我些热心值吧,哈哈哈,我会公布源码出来

7253e156a3963a58a1f26e5d0b912b4.png (46.83 KB, 下载次数: 0)

下载附件  保存到相册

请点赞

2019-3-18 15:42 上传

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7386.html

搜索