Я развернул проект scrapy, который сканирует всякий раз, когда приходит запрос лямбда-апи.Ошибка сбрасывания Scrapy ReactorNotRestartable при запуске на AWS Lambda
Он отлично работает для первого вызова api, но позже он терпит неудачу и выдает ошибку ReactorNotRestartable.
Насколько я понимаю, экосистема AWMS 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)
Но проблема заключалась в том, что мне пришлось ждать, пока лямбда-вызов tim .
Пробовал другие решения, но ни один из них не работает. Может ли кто-нибудь вести меня, как решить эту проблему.
Ха. Lambda повторно использует ваш процесс Python для обработки нескольких событий? И ваш обработчик должен выполнить синхронно? –
@firefox Поскольку вы отметили вопрос как решенный. Можете ли вы описать, как вы использовали вязание крючком для решения вашей проблемы? – Hugo
@firefox Мне тяжело пытаться запустить scrapy в aws lambda .. как вы создали свой zip-файл? У меня есть «ImportError: не могу импортировать имя» etree'' –