我现在用下面的代码在python-3.8.10Ubuntu 20上.尽管每一次try ,超时似乎都不起作用.我不确定我是不是把文本输入错了?

    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))

然而,程序运行的时间超过了超时时间,并且从未被终止

推荐答案

根据堆栈溢出答案How to terminate a python subprocess launched with shell=Trueexec 命令添加到子进程命令

comments 中还指出,另一个解决方案是取出shell=True个命令,并将其更改为列表中的命令,而不是字符串.尽管这可能是正确的,但实际文件中有太多不同的函数,我发布了几乎shell=True个子进程中的一个的简化命令.

因此,为什么只需向每个子进程添加exec 命令.

Python相关问答推荐

如何防止Plotly在输出到PDF时减少行中的点数?

使用from_pandas将GeDataFrame转换为polars失败,ArrowType错误:未传递numpy. dype对象

在Pandas框架中截短至固定数量的列

使用SciPy进行曲线匹配未能给出正确的匹配

即使在可见的情况下也不相互作用

acme错误-Veritas错误:模块收件箱没有属性linear_util'

试图找到Python方法来部分填充numpy数组

numba jitClass,记录类型为字符串

如何在Windows上用Python提取名称中带有逗号的文件?

从numpy数组和参数创建收件箱

如何在给定的条件下使numpy数组的计算速度最快?

如何调整QscrollArea以正确显示内部正在变化的Qgridlayout?

海上重叠直方图

多处理队列在与Forking http.server一起使用时随机跳过项目

如何在达到end_time时自动将状态字段从1更改为0

如何在海上配对图中使某些标记周围的黑色边框

使用嵌套对象字段的Qdrant过滤

删除特定列后的所有列

合并相似列表

如何从数据框列中提取特定部分并将该值填充到其他列中?