python分布式爬虫中消息队列知识点详解


Posted in Python onNovember 26, 2020

当排队等待人数过多的时候,我们需要设置一个等待区防止秩序混乱,同时再有新来的想要排队也可以呆在这个地方。那么在python分布式爬虫中,消息队列就相当于这样的一个区域,爬虫要进入这个区域找寻自己想要的资源,当然这个是一定的次序的,不然数据获取就会出现重复。就下来我们就python分布式爬虫中的消息队列进行详细解释,小伙伴们可以进一步了解一下。

实现分布式爬取的关键是消息队列,这个问题以消费端为视角更容易理解。你的爬虫程序部署到很多台机器上,那么他们怎么知道自己要爬什么呢?总要有一个地方存储了他们需要爬取的url吧,这样他们才能工作。

假设有1万个url需要爬取,而你有100个爬虫程序部署在10台机器上,每台10个爬虫程序在运行,一个url被分给爬虫程序后,其他爬虫不能再获得这个url,不然,就重复爬取了,理解吧,分布式爬虫的关键是怎么把任务分给这些爬虫。

有些促销活动的现场会进行抽奖活动,工作人员捧着一个透明的箱子,参与活动的人从箱子的小口处把手伸进去随机拿出一张折叠的纸条,这种模式与消息队列十分相似。消息队列就好比这个抽奖的箱子,消费端的爬虫程序就好比参与活动的顾客,爬虫从消息队列里拿出一个url任务,然后进行爬取,不同于抽奖活动时一个人只能拿一次,分布式爬虫允许爬虫在结束一个爬虫任务后继续从消息队列里获取任务。

使用redis的队列做消息队列

如果你只是简单的写一个分布式爬虫,那么使用redis的队列就可以了,它完全可以作为消息队列来使用,下面的代码是生产端的代码示例

import redis
r = redis.Redis(host='127.0.0.1', port=6379,
        password='yourpassword', db=1)
# 生产10个url任务
for i in range(10):
  r.lpush('url_queue', i)

相信看完以上的代码示例后,小伙伴们已经学会用redis创造一个消息队列,用来方便爬虫的获取数据。本篇是以生产段的角度写的代码

到此这篇关于python分布式爬虫中消息队列知识点详解的文章就介绍到这了,更多相关python分布式爬虫中的消息队列是什么内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中logging模块的用法实例
Sep 29 Python
在Python中使用HTMLParser解析HTML的教程
Apr 29 Python
Windows下为Python安装Matplotlib模块
Nov 06 Python
Python3中使用PyMongo的方法详解
Jul 28 Python
Python实现登陆文件验证方法
Oct 06 Python
Ubuntu下Anaconda和Pycharm配置方法详解
Jun 14 Python
简单瞅瞅Python vars()内置函数的实现
Sep 27 Python
tensorflow查看ckpt各节点名称实例
Jan 21 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
Feb 20 Python
在Django中预防CSRF攻击的操作
Mar 13 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
May 15 Python
python 实现音频叠加的示例
Oct 29 Python
Flask-SocketIO服务端安装及使用代码示例
Nov 26 #Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 #Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 #Python
Django-celery-beat动态添加周期性任务实现过程解析
Nov 26 #Python
Django celery异步任务实现代码示例
Nov 26 #Python
Django通过设置CORS解决跨域问题
Nov 26 #Python
Django利用elasticsearch(搜索引擎)实现搜索功能
Nov 26 #Python
You might like
Snoopy类使用小例子
2008/04/15 PHP
PHP 文件类型判断代码
2009/03/13 PHP
php的大小写敏感问题整理
2011/12/29 PHP
PHP实现对站点内容外部链接的过滤方法
2014/09/10 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
2019/03/18 PHP
JavaScript 浮点数运算 精度问题
2009/10/06 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
TypeOf这些知识点你了解吗
2016/02/21 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
2016/11/05 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
element的el-table中记录滚动条位置的示例代码
2019/11/06 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
bpython 功能强大的Python shell
2016/02/16 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
pandas使用apply多列生成一列数据的实例
2018/11/28 Python
Django打印出在数据库中执行的语句问题
2019/07/25 Python
我们是伦敦女孩:WalG
2018/01/08 全球购物
业绩考核岗位职责
2014/02/01 职场文书
小学生家长评语大全
2014/02/10 职场文书
互联网电子商务专业毕业生求职信
2014/03/18 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
拓展策划方案
2014/06/03 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
小学端午节活动总结
2015/02/11 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
民事调解协议书
2016/03/21 职场文书
85句关于理想的名言警句大全
2019/08/22 职场文书
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python