0

我有一个奇怪的问题,我以前没有遇到过。我有一个脚本可以在给定的时间段内提供 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 容器中的某些东西导致我挂起?

4

1 回答 1

0

确定了问题。

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

于 2020-04-20T14:30:47.883 回答