【发布时间】:2014-09-07 10:11:37
【问题描述】:
在 Linux 的 apache2+mod_wsgi 下运行的这段代码有时会产生以下输出。
notes.py
cmd_list = [
'abc_generate_pdf',
'--cdb-url-prefix', model.config('cdb_url_prefix'),
'--request-cid', request_cid,
]
log.info("About to run: {!r}".format(cmd_list))
subprocess.Popen(cmd_list)
...
2014-07-16 11:03:44,779 INFO pid:17925,140353357215488 abc.webapp.check.notes:198:approval_revoke About to run: ['abc_generate_pdf', '--cdb-url-prefix', 'xxxxdev', '--request-cid', u'xxxxx_xxx_2014-07-15_16.12.50.108807_685932a62c7c6226987acdeda367dbc3']
2014-07-16 11:03:45,250 ERROR pid:17925,140353357215488 abc.webapp.check.notes:208:approval_revoke Unknown error; approval not updated.
Traceback (most recent call last):
File "/home/abc/abc/webapp/check/notes.py", line 199, in approval_revoke
subprocess.Popen(cmd_list)
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 7] Argument list too long
输出已被稍微匿名化,但字符数保持准确。
这个问题似乎是在网络服务器运行很长时间后发生的,重启后就消失了,但是很难确切地确定触发器可能是什么。
为什么我会收到错误,我可以做些什么来防止它?
这个问题和Python OSError no 7 (Argument list too long ) in linux很像,没有满意的答案。
编辑:我应该注意,问题也发生在纯 python werkzeug 服务器下。
【问题讨论】:
-
是否值得尝试使用
shell=True进行调试? -
可能。我更愿意在使用创可贴之前了解这个问题,但这可能会导致更冗长的错误。我会试一试,尽管可能需要一段时间才能使进程变得足够老以再次实际出现问题。
标签: python linux python-2.7 subprocess