Subprocess.run 超时不会杀死子进程

问题描述 投票:0回答:1

我目前在

python-3.8.10
上使用以下代码。尽管每次尝试,超时似乎都不起作用。我不确定我输入的文字是否错误?
Ubuntu 20

但是程序运行的时间超过了超时时间并且永远不会被杀死

python subprocess ubuntu-20.04
1个回答
0
投票
cmd = 'ebook-convert "%s" "%s"' % (filename, outfile) process = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=77400) try: ConversionFile.set_to_finished(options.get('uuid')) if process.stderr and "error" in process.stderr.decode("utf-8"): return {'error': process.stderr.decode("utf-8")} return [outfile] except Exception as e: print(str(e))

命令添加到基于此堆栈溢出答案的子进程命令

如何终止使用 shell=True 启动的 python 子进程
评论中还指出,另一种解决方案是删除

exec

并将命令更改为列表而不是字符串。虽然这可能是正确的,但实际文件中有太多不同的函数,我发布了近百个不同子进程之一的简化命令。

因此,为什么只是简单地将 

shell=True

命令添加到每个子进程。

    

© www.soinside.com 2019 - 2024. All rights reserved.