Próbuję sprawić, że mój Spider Scrapy zostanie uruchomiony ponownie, jeśli przyczyną zamknięcia jest moje połączenie z Internetem (podczas gdy w nocy internet zejdzie na 5 minut). Kiedy internet schodzi pająk zamyka się po 5 próbach.Scrapy Spider: Ponownie uruchom pająka, gdy kończy się
Próbuję użyć tej funkcji w mojej definicji pająka próbuje zrestartować pająka kiedy zamknięty:
def handle_spider_closed(spider, reason):
relaunch = False
for key in spider.crawler.stats._stats.keys():
if 'DNSLookupError' in key:
relaunch = True
break
if relaunch:
spider = mySpider()
settings = get_project_settings()
crawlerProcess = CrawlerProcess(settings)
crawlerProcess.configure()
crawlerProcess.crawl(spider)
spider.crawler.queue.append_spider(another_spider)
próbowałem wiele rzeczy, jak ponownie instancję pająka ale dostałem błąd reaktor jest już działający lub coś w tym stylu.
Pomyślałem o wykonaniu pająka ze skryptu, a kiedy pająk zakończy to połączenie, ale nie zadziałało, ponieważ reaktor nadal jest w użyciu.
- Moją intencją jest, aby zresetować pająk po jego zamknięciu (pająk zamyka, ponieważ stracił połączenie z Internetem)
Czy ktoś zna dobry i łatwy sposób to zrobić?
Scenariusz badać będzie za pomocą pracy scrapy (http://doc.scrapy.org/en/latest/topics/jobs.html) do czynienia z zachowaniem między różnymi instancjami pająków i skryptami powłoki, aby sprawdzać na przykład co 10 minut, czy proces scrapy jest aktywny. jeśli nie ponownie go uruchom. – aberna
Po prostu strzał w ciemności: co by było, gdyby użyć spider.crawler.crawl (spider) po przywróceniu pająka? Dzięki. – alecxe
Czytałem te dokumenty, ale nie rozumiem, jak automatycznie ponownie uruchomić pająka, gdy zamyka się – AlvaroAV