subprocess.call()挂起。 “ os.waitpid(self.pid,wait_flags)”

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

我有一个从未遇到过的奇怪问题。我有一个脚本可以在给定的时间段内发送PDF报告。到现在为止一切正常,但是我进行了一些更新并将这些更改拉到服务器上。现在我的进程挂在subprocess.call()上,我不确定为什么。

我已经阅读过使用PIPE时可能会遇到的问题,但不是。我甚至不确定如何调试此问题。有什么想法吗?

subprocess.call(
                ['{}/orca.sh'.format(orca_dir),
                 'graph',
                 json.dumps(chart, cls=plotly.utils.PlotlyJSONEncoder),
                 '--width',
                 '1200',
                 '--scale',
                 '4',
                 '-o',
                 '/temp/{}'.format("a" + (count * "a"))]
)



 File "/root/**", line 97, in **
    '/temp/{}'.format("a" + (count * "a"))])
  File "/root/anaconda3/envs/**/lib/python3.7/subprocess.py", line 325, in call
    return p.wait(timeout=timeout)
  File "/root/anaconda3/envs/**/lib/python3.7/subprocess.py", line 990, in wait
    return self._wait(timeout=timeout)
  File "/root/anaconda3/envs/**/lib/python3.7/subprocess.py", line 1624, in _wait
    (pid, sts) = self._try_wait(0)
  File "/root/anaconda3/envs/**/lib/python3.7/subprocess.py", line 1582, in _try_wait
    (pid, sts) = os.waitpid(self.pid, wait_flags)

orca.sh执行Orca的AppImage容器,以使用给定的参数执行其独立软件。还值得注意的是,我在两台服务器上运行了该脚本,但是第二台是预先更新的,仍然可以正常运行。对于此呼叫的产生方式或工作方式,我没有进行任何更改。是AppImage容器中的某物导致我挂起吗?

python subprocess orca appimage
1个回答
0
投票

已确定问题。

我的脚本编译了一个绘图对象列表以生成这些图表,但未能正确生成第一个绘图对象。因此,第一个对象是NoneType,但是对列表的每个成员调用了subprocess.call()。不幸的是,由于AppImage没有收到图表数据,因此似乎只是无限期地挂起。

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