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制作获取网站目录的图形化程序
May 04 Python
在Python程序中操作MySQL的基本方法
Jul 29 Python
利用python批量检查网站的可用性
Sep 09 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 Python
Python计算一个点到所有点的欧式距离实现方法
Jul 04 Python
python实现H2O中的随机森林算法介绍及其项目实战
Aug 29 Python
numpy.random.shuffle打乱顺序函数的实现
Sep 10 Python
Python语言异常处理测试过程解析
Jan 08 Python
Python txt文件常用读写操作代码实例
Aug 03 Python
Python基础之教你怎么在M1系统上使用pandas
May 08 Python
python基础学习之递归函数知识总结
May 26 Python
python运算符之与用户交互
Apr 13 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
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
php使用codebase生成随机数
2014/03/25 PHP
php实现mysql事务处理的方法
2014/12/25 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
php 中序列化和json使用介绍
2013/07/08 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
Nodejs下使用gm圆形裁剪并合成图片的示例
2018/02/22 NodeJs
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
vue.js实现的幻灯片功能示例
2019/01/18 Javascript
nodejs中实现修改用户路由功能
2019/05/24 NodeJs
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
[51:06]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS Liquid
2018/03/30 DOTA
python实现划词翻译
2020/04/23 Python
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
django 类视图的使用方法详解
2019/07/24 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
python实现贪吃蛇双人大战
2020/04/18 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
让IE支持CSS3的不完全兼容方案
2014/09/19 HTML / CSS
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
五年级语文教学反思
2014/01/30 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
看雷锋电影观后感
2015/06/10 职场文书