吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4534|回复: 8
收起左侧

[Python 转载] python celery异步队列爬虫的实现!!

[复制链接]
oskfh 发表于 2019-3-18 15:41
本帖最后由 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用在他正确的用途上, 例如注册后发送验证邮件.等等


下面是项目图片:

调用种子url的方法

调用种子url的方法


配置文件1

配置文件1


配置文件2

配置文件2


配置文件3

配置文件3


tasks文件

tasks文件


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

请点赞

请点赞

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
feng504x + 1 + 1 我很赞同!
ytahdou + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ytahdou 发表于 2019-3-18 15:52
不错,感谢分享经验!!!!!!!!!!!!!!
 楼主| oskfh 发表于 2019-3-18 15:54
ytahdou 发表于 2019-3-18 15:52
不错,感谢分享经验!!!!!!!!!!!!!!

给个热心值啊, 老铁
 楼主| oskfh 发表于 2019-3-18 21:26
ytahdou 发表于 2019-3-19 09:19
oskfh 发表于 2019-3-18 15:54
给个热心值啊, 老铁

已经评分!!!!!!!!!!!
Python还是很火的。
 楼主| oskfh 发表于 2019-3-19 10:37
ytahdou 发表于 2019-3-19 09:19
已经评分!!!!!!!!!!!
Python还是很火的。

谢谢,老铁支持
feng504x 发表于 2019-3-19 19:14
顶一个,好东西

免费评分

参与人数 1吾爱币 +1 收起 理由
oskfh + 1 热心回复!

查看全部评分

samwang919 发表于 2019-4-3 01:14
8f5t8f5t8f5t8f5t
zucker 发表于 2020-3-19 14:38
aiohttp用吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 03:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表