我目前在
python-3.8.10
上使用以下代码。尽管每次尝试,超时似乎都不起作用。我不确定我输入的文字是否错误?Ubuntu 20
但是程序运行的时间超过了超时时间并且永远不会被杀死
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
命令添加到每个子进程。