我有一个可以在无限循环中工作的 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
并查看发生了什么?启动事后调试器会告诉我脚本在做什么,或者在我杀死它之前它在哪一行?有什么办法可以解决这个问题吗?