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)