我有一个使用多进程的Python 2.6.6应用程序。我使用队列将I / O繁重的工作分配给子进程。该应用程序一直在运行CentOS的x86机器上运行,作为日常cron作业的一部分,持续数月没有问题。我已经将机器升级到x64(它是一个linode)并且问题就开始了。
我看到的问题只是推送到队列的工作的一部分完成。该计划完成。我也在cron输出中看到了这一点:
Traceback (most recent call last):
File "/usr/lib64/python2.6/multiprocessing/queues.py", line 242, in _feed
这是违规代码,沿着LHS的行号:
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的声明中打印出来。我是对的吗?
有人知道如何解决这个问题吗?