Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python多进程的神秘异常_Python_Exception_Multiprocess - Fatal编程技术网

Python多进程的神秘异常

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

我有一个使用多进程的Python2.6.6应用程序。我正在使用队列将I/O繁重的工作分配给子流程。作为日常cron作业的一部分,该应用程序在运行CentOS的x86机器上运行了几个月,没有出现任何问题。我已经将机器升级到x64(它是一个linode),问题开始了

我看到的问题只是推送到队列的工作完成的一部分。程序完成。我在cron输出中也看到了这一点:

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的工作方式)是问题的一部分?您粘贴的回溯不包括实际引发的异常,即使是单行跟踪也应该存在。肯定少了些什么。