ラムダapiリクエストが来るたびにクロールする治療プロジェクトを展開しました。AWS LambdaでrunnningしたときにReactorNotRestartableエラーがスローされる
最初のAPIコールでは完全に実行されますが、後で失敗してReactorNotRestartableエラーがスローされます。
AWSラムダエコシステムがプロセスを殺しているわけではないので、原子炉はまだメモリに残っています。
次のようにラムダログエラーがある:
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()
Iスタート機能のフラグを挿入することによって、反応器を停止しないことにより回避策を持っていた
process.start(stop_after_crawl=False)
しかし、この問題は、私がラムダコールの時間エッチアウト。
他の解決方法を試してみましたが、どれも解決していないようです。この問題を解決する方法を教えてください。
はぁ。 Lambdaは複数のイベントを処理するためにPythonプロセスを再利用しますか?ハンドラは同期して完了する必要がありますか? –
@firefoxあなたは解決済みとして質問をマークして以来。問題を解決するためにかぎ針編みをどのように使用したか説明できますか? – Hugo
@firefox私はawsラムダで治療を実行しようとするのは苦労している..どのようにあなたのzipファイルを作成しましたか?私は 'ImportError:名前をインポートできません 'etree'y –