получить уведомление от AWS в CloudWatch:
вернул проект scrapy, который сканирует каждый раз, когда приходит запрос лямбда-API.
Он отлично работает для первого вызова API, но позже он завершается неудачно и выдает ошибку ReactorNotRestartable.
Насколько я понимаю, экосистема AWS Lambda не убивает процесс, поэтому реактор все еще присутствует в памяти.
Ошибка лямбда-журнала выглядит следующим образом:
Traceback (most recent call last):
File "/var/task/aws-lambda.py", line 42, in run_company_details_scrapy
process.start()
File "./lib/scrapy/crawler.py", line 280, in start
reactor.run(installSignalHandlers=False) # blocking call
File "./lib/twisted/internet/base.py", line 1242, in run
self.startRunning(installSignalHandlers=installSignalHandlers)
File "./lib/twisted/internet/base.py", line 1222, in startRunning
ReactorBase.startRunning(self)
File "./lib/twisted/internet/base.py", line 730, in startRunning
raise error.ReactorNotRestartable()
ReactorNotRestartable
Функция лямбда-обработчика:
def run_company_details_scrapy(event, context):
process = CrawlerProcess()
process.crawl(CompanyDetailsSpidySpider)
process.start()
У меня был обходной путь, не останавливая реактор, вставив флаг в функцию запуска
process.start(stop_after_crawl=False)
Но проблема была в том, что мне пришлось ждать, пока не истечет время лямбда-вызова.
Пробовал другие решения, но ни одно из них вроде не работает. Может кто-нибудь подсказать мне, как решить эту проблему.