python - 如果进程没有被杀死,subprocess32.check_output 不会引发 TimeoutExpired
问题描述
使用 subprocess32 的方法时,即使时间过去了,进程也没有完成check_output
,有时也没有引发。TimeoutExpired
查看 的源代码subprocess32
,我偶然发现了以下代码:
try:
output, unused_err = process.communicate(timeout=timeout)
except TimeoutExpired:
process.kill()
output, unused_err = process.communicate()
raise TimeoutExpired(process.args, timeout, output=output)
似乎如果进程不会响应 SIGKILL 问题process.kill()
,解释器可能会无限期地挂起process.communicate()
,因此不会像我预期的那样引发TimeoutExpired
异常。
我在这里想念什么?是否有更好的做法来调用进程,同时确保在必要时持续抛出超时?
谢谢!