我用scrapy-redis写了一个简单的爬虫来制作分布式蜘蛛。当我启动两只蜘蛛,然后把它们都杀死时,我发现了这点。redis队列只留下了‘dupfilter’队列。当我重新启动这两个爬虫时,它们根本不起作用。那么,如果蜘蛛意外死亡或崩溃,如何重新启动它们呢?
发布于 2016-05-30 19:45:42
如果您将SCHEDULER_PERSIST
设置为False
,那么当爬行器完成时,dupefilter将被清除。
然而,如果蜘蛛被杀死了(例如:点击两次Ctrl+C),情况就不会这样了。
您可以向爬行器添加一个标志来清除dupefilter (甚至是队列),例如:
if self.clear_all:
self.crawler.engine.slot.scheduler.df.clear()
self.crawler.engine.slot.scheduler.queue.clear()
https://stackoverflow.com/questions/37518501
复制相似问题