即使指定了超时,subprocess.run也不会超时

时间:2018-05-14 20:56:37

标签: python-3.x

我有以下Python代码:

strRunOutput = subprocess.run([strFastbootExecutable, "-s", dsn.upper(), "reboot"], timeout=5, stderr=subprocess.PIPE).stderr.decode('utf-8').upper()

基本上是这样做的:

fastboot -s G070GV1871970FCW reboot

这是输出:

< waiting for G070GV1871970FCW >

......这是悬挂的。为什么fastboot命令挂起,我不知道,但更令我困扰的是subprocess.run命令在我告诉它并且导致我的程序挂起后5秒钟没有超时。有什么想法会发生什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

这是一个已知问题 - Python bug跟踪器上有两张与之相关的票据。

由于你连接了一根烟斗,它没有超时。

Issue31935: subprocess.run() timeout not working with grandchildren and stdout=PIPE
Issue30154: subprocess.run with stderr connected to a pipe won't timeout when killing a never-ending shell commanad (sic)