关于python 3.x:即使指定了超时,subprocess.run也没有超时

subprocess.run isn't timing out, even though timeout is specified

我有以下Python代码:

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

这基本上是这样做的:

1
fastboot -s G070GV1871970FCW reboot

这是输出:

1
< waiting for G070GV1871970FCW >

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

谢谢!


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

它没有超时,因为你连接了一个管道。

Issue31935:subprocess.run()超时不与孙子和stdout = PIPE一起使用
Issue30154:连接到管道的stderr的subprocess.run在杀死一个永无止境的shell commanad时不会超时(sic)