О требованиях для работы навсегда, вот некоторые подробности.
Вам нужно перехватить сигнал signals.spider_idle
, и в вашем методе, который подключен к сигналу, вам нужно вызвать исключение DontCloseSpider
,Сигнал spider_idle
отправляется в механизм очистки, когда нет ожидающих запросов, и по умолчанию паук выключается.Вы можете перехватить этот процесс.
См. Коды удара:
import scrapy
from scrapy.exceptions import DontCloseSpider
from scrapy.xlib.pydispatch import dispatcher
class FooSpider(scrapy.Spider):
def __init__(self, *args, **kwargs):
super(FooSpider, self).__init__(*args, **kwargs)
dispatcher.connect(self.spider_idle, signals.spider_idle)
def spider_idle(self):
#you can revisit your portal urls in this method
raise DontCloseSpider