多个scrapy-redis无法同时抓取

同时开启两个scrapy任务,然后往redispush一个start_url
但是只有一个scrapy任务A在运行,当把A停止之后,B任务才会开始抓取。

原因貌似是因为scrapy-redis在运行过程中,在redis中并没有保存requests,只保存了dupefilter,只有ctrl+c停止后,才会在redis中保存requests

或者在往redis中push一个start_url,B任务才会开始抓取。
这是怎么回事?

clipboard.png

clipboard.png

版本:
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
阅读 4k
2 个回答

原因找到了,是因为 生成next_url太慢,即往redis push之后,立马被pop了,才导致redis 没有 requests的序列化,然后导致其他scrapy实例无法读取request继而无法同时进行数据抓取。

新手上路,请多包涵

那么这个问题要怎么解决?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题