多个scrapy-redis无法同时抓取
同时开启两个scrapy
任务,然后往redis
中push
一个start_url
但是只有一个scrapy任务A在运行,当把A停止之后,B任务才会开始抓取。
原因貌似是因为scrapy-redis在运行过程中,在redis中并没有保存requests
,只保存了dupefilter
,只有ctrl+c停止后,才会在redis中保存requests
或者在往redis中push一个start_url,B任务才会开始抓取。
这是怎么回事?
版本:
python 3.6
Scrapy (1.5.0)
scrapy-redis (0.6.8)
settings.py
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
SCHEDULER_PERSIST = True
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
原因找到了,是因为 生成next_url太慢,即往redis push之后,立马被pop了,才导致redis 没有 requests的序列化,然后导致其他scrapy实例无法读取request继而无法同时进行数据抓取。
那么这个问题要怎么解决?