Python多进程的神秘异常
我有一个使用多进程的Python2.6.6应用程序。我正在使用队列将I/O繁重的工作分配给子流程。作为日常cron作业的一部分,该应用程序在运行CentOS的x86机器上运行了几个月,没有出现任何问题。我已经将机器升级到x64(它是一个linode),问题开始了 我看到的问题只是推送到队列的工作完成的一部分。程序完成。我在cron输出中也看到了这一点:Python多进程的神秘异常,python,exception,multiprocess,Python,Exception,Multiprocess,我有一个使用多进程的Python2.6.6应用程序。我正在使用队列将I/O繁重的工作分配给子流程。作为日常cron作业的一部分,该应用程序在运行CentOS的x86机器上运行了几个月,没有出现任何问题。我已经将机器升级到x64(它是一个linode),问题开始了 我看到的问题只是推送到队列的工作完成的一部分。程序完成。我在cron输出中也看到了这一点: Traceback (most recent call last): File "/usr/lib64/python2.6/multipro
Traceback (most recent call last):
File "/usr/lib64/python2.6/multiprocessing/queues.py", line 242, in _feed
以下是违规代码,左侧有行号:
237 if wacquire is None:
238 send(obj)
239 else:
240 wacquire()
241 try:
242 send(obj)
243 finally:
244 wrelease()
245 except IndexError:
246 pass
247 except Exception, e:
248 # Since this runs in a daemon thread the resources it uses
249 # may be become unusable while the process is cleaning up.
250 # We ignore errors which happen after the process has
251 # started to cleanup.
252 try:
253 if is_exiting():
254 info('error in queue thread: %s', e)
255 else:
256 import traceback
257 traceback.print_exc()
258 except Exception:
259 pass
所以我认为这个例外是在242行提出的,然后在257行的声明中打印出来的。我说得对吗
有人知道我如何解决这个问题吗?你能提供完整的回溯吗?你现在只有第一行,这是完全的回溯,这绝对不是完全的回溯。在cron输出中,它可能会被截断,但如果没有它的其余部分,就几乎不可能诊断出问题。我知道单行堆栈跟踪是不寻常的,但是_feed方法是它自己的
threading.Thread
的目标。这难道不能解释为什么堆栈跟踪只有一行吗?此外,我一直在尝试在cron作业之外复制这个,但到目前为止没有成功-也许cron(或cron的工作方式)是问题的一部分?您粘贴的回溯不包括实际引发的异常,即使是单行跟踪也应该存在。肯定少了些什么。