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定时检查启动某个exe程序适合检测exe是否挂了
Jan 21 Python
python使用cookielib库示例分享
Mar 03 Python
python操作ssh实现服务器日志下载的方法
Jun 03 Python
Python Socket编程详细介绍
Mar 23 Python
Python使用ctypes调用C/C++的方法
Jan 29 Python
学生信息管理系统Python面向对象版
Jan 30 Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 Python
利用Python自动化操作AutoCAD的实现
Apr 01 Python
python实现交并比IOU教程
Apr 16 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
Dec 07 Python
Python如何telnet到网络设备
Feb 18 Python
Python实现学生管理系统并生成exe可执行文件详解流程
Jan 22 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
PHP超级全局变量数组小结
2012/10/04 PHP
Php中用PDO查询Mysql来避免SQL注入风险的方法
2013/04/25 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
纯js和css完成贪吃蛇小游戏demo
2016/09/01 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
浅谈Vue组件单元测试究竟测试什么
2020/02/05 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
Python采用Django开发自己的博客系统
2020/09/29 Python
Zookeeper接口kazoo实例解析
2018/01/22 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
详解Python3注释知识点
2019/02/19 Python
python如何制作缩略图
2019/04/30 Python
Python高级编程之继承问题详解(super与mro)
2019/11/19 Python
python计算无向图节点度的实例代码
2019/11/22 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
美国最大的团购网站:Groupon
2016/07/23 全球购物
2014年中班元旦活动方案
2014/02/14 职场文书
教师党员先进性教育自我剖析材料思想汇报
2014/09/24 职场文书
2014年采购部工作总结
2014/11/20 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
社区干部培训心得体会
2016/01/06 职场文书
详解PHP设计模式之依赖注入模式
2021/05/25 PHP
Python+pyaudio实现音频控制示例详解
2022/07/23 Python