2016-05-30 9 views
0

私は分散型のスパイダーを作るためにscrapy-redisでシンプルなスパイダーを書いていました。私は2つのスパイダーを起動し、それらをすべて殺すときにそれを見つけました。 redisキューは 'dupfilter'キューのみを残しました。私は2つのスパイダーを再起動すると、まったく動作しませんでした。だから、誤って殺したり、墜落したりした場合、スパイダーを再始動する方法はありますか?scrap-redisスパイダーをスムーズに再起動するには?

答えて

1

SCHEDULER_PERSISTFalseに設定すると、スパイダーが終了するとデュプリケーターがクリアされます。

しかし、スパイダーが強制終了された場合(つまり、Ctrl + Cを2回押す)はそうはなりません。

あなたは、たとえば、dupefilter(あるいはキュー)をクリアするために、あなたのクモにフラグを追加することができます

if self.clear_all: 
    self.crawler.engine.slot.scheduler.df.clear() 
    self.crawler.engine.slot.scheduler.queue.clear() 
関連する問題