我有一个从未遇到过的奇怪问题。我有一个脚本可以在给定的时间段内发送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容器中的某物导致我挂起吗?
已确定问题。
我的脚本编译了一个绘图对象列表以生成这些图表,但未能正确生成第一个绘图对象。因此,第一个对象是NoneType,但是对列表的每个成员调用了subprocess.call()。不幸的是,由于AppImage没有收到图表数据,因此似乎只是无限期地挂起。