私は無限ループで動作するPythonスクリプトを持っています.スクリプトはいくつかのことを行い、クラスからいくつかのメソッドを使用し、私が持っているいくつかのロガーに情報を記録し、SQS Amazonキューで動作します. このようなもの:
A = ClassA()
B = ClassB()
C = ClassC()
while True:
# pull messages from SQS
messages = sqs.pull_messages()
logger.info('Pulled messages from SQS')
A.do_something(messages)
logger.info('Doing something on class A')
# download something from the internet
data = B.download_something()
logger.info('Downloaded something')
C.insert_to_database()
スクリプトは、メモリが不足したりスクリプトを終了したりすることなく、数日間正常に動作します。トレースバックが原因で、Linux ボックスで次のようにスクリプトを開始します。
python script.py &
数日後、ボックスに戻って、スクリプトがまだ実行されていることを確認できますが、ロガーは 1 日前までデータをログに記録していました。これは一般的なパターンではありません。スクリプトが数時間後、場合によっては数日後に動作を停止することもありますが、強制終了されることはありません。
私の質問は、プロセスkill pid
を強制終了して何が起こっているのかを確認する方法はありますか? 事後分析デバッガーを起動すると、スクリプトが何をしていたか、またはスクリプトを強制終了する前にどの行にあったかがわかります。これに取り組むアプローチはありますか?