在指定时间内未完成的Python进程如何杀掉?
这是一个场景:
我有一个Python脚本,它是通过浏览器的AJAX调用的。我希望这个Python脚本能够运行并返回结果,但如果它在10秒内没有成功运行,我希望这个脚本能中止,并返回其他的处理结果。而且,在一开始,我想记录一下这个请求是什么。
这是我考虑的架构:
指挥脚本
调用三个脚本,作为子进程运行?
1. 主要的代码,执行并返回结果
2. 第二个脚本,等待10秒,然后返回False
3. 第三个脚本,用于在数据库中记录请求
指挥脚本将返回(1)的结果,或者如果收到(2)的反馈则返回错误。
你会怎么实际实现这个呢?我搞不清楚是应该使用线程库还是使用os库中的子进程。
或者有没有更好的方法来做到这一点?
3 个回答
1
如果这个脚本在类似Unix的系统上运行,你可以使用SIGALRM来实现这个功能。具体的例子可以在Python文档中找到。
0
我强烈建议你使用Python的multiprocessing库。这个库里面有一个叫process.terminate()
的方法。