我曾用scrapy-redis编写了一个简单的蜘蛛来制作分布式蜘蛛。我发现当我开始两只蜘蛛然后全部杀死它们时。 redis队列只留下'dupfilter'队列。当我重新启动两只蜘蛛时,它们根本不起作用。那么如果蜘蛛意外死亡或坠毁,如何重新启动?
答案 0 :(得分:1)
如果您将设置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()