У меня есть сканер Scrapy, который запускается один раз.Я искал решение, чтобы он непрерывно повторял свой цикл сканирования, пока не остановился.
Другими словами, как только первая итерация обхода завершится, автоматически запустите вторую итерацию, не останавливая весь обходчик, после этого - третья итерация и так далее.Кроме того, возможно, он снова запустится через x секунд, хотя я не уверен, как система отреагирует в случае, если предыдущий процесс сканирования не завершится при попытке запустить еще одну итерацию.
Решения, которые я нашел в Интернете, таким образомдалеко только ссылки на cron или scrapyd, в которых я не заинтересован. Меня больше интересует реализация настраиваемого планировщика в проекте crawler с использованием таких процессов, как CrawlerRunner или реакторы.У кого-нибудь есть пара указателей?
Следующий код из другого вопроса stackoverflow - самая близкая информация, которую я нашел в отношении моих вопросов, но я ищу несколько советов о том, как реализовать более непрерывный подход.
+ from twisted.internet import reactor, defer
+ from scrapy.crawler import CrawlerRunner
+ from scrapy.utils.log import configure_logging
+ def run_crawl():
+ """
+ Run a spider within Twisted. Once it completes,
+ wait 5 seconds and run another spider.
+ """
+ runner = CrawlerRunner(get_project_settings())
+ runner.crawl(SpiderA)
+ runner.crawl(SpiderB)
+ deferred = runner.join()
+ deferred.addCallback(reactor.callLater, 5, run_crawl)
+ return deferred
+ run_crawl()
+ reactor.run()
Ошибка: «сообщение»: «В модуле« twisted.internet.reactor »нет элемента« run »,« source »:« pylint »,
ОБНОВЛЕНИЕ Как программно запланировать выполнение сканирования Scrapy
Попытка реализовать это, но не удается импортировать моего паука, я получаю сообщение об ошибке модуля не найден.Переменные реактора также имеют красный цвет с ошибкой и говорят, что модуль twisted.internet.reactor не имеет члена callLater ////// или не имеет элемента run.