好好跑着的代码,国庆回来突然报错,报错内容是:
ERROR/ForkPoolWorker-7] Thread 'ResultHandler' crashed: OSError('handle is closed',)
Traceback (most recent call last):
File "/root/kvenv/lib/python2.7/site-packages/billiard/pool.py", line 478, in run
return self.body()
File "/root/kvenv/lib/python2.7/site-packages/billiard/pool.py", line 866, in body
self.finish_at_shutdown()
File "/root/kvenv/lib/python2.7/site-packages/billiard/pool.py", line 883, in finish_at_shutdown
ready, task = poll(1.0)
File "/root/kvenv/lib/python2.7/site-packages/billiard/pool.py", line 1326, in _poll_result
if self._outqueue._reader.poll(timeout):
File "/root/kvenv/lib/python2.7/site-packages/billiard/connection.py", line 285, in poll
self._check_closed()
File "/root/kvenv/lib/python2.7/site-packages/billiard/connection.py", line 165, in _check_closed
raise OSError("handle is closed")
OSError: handle is closed
ERROR/MainProcess] Process 'ForkPoolWorker-7' pid:31664 exited with 'exitcode 1'
查了一上午的 google,只有 celery 的一个 git issue 是一样的报错,里面提到是 gevent 的问题。排查了自己的代码,只有一个地方用到了 gevent,所以 gevent 可能是一个原因。但是奇怪的是,之前一直都没报错过,然后重启程序之后也正常了。
请问各位大佬:是否有同样碰到过这种问题的,如果有解决方案万分感谢。
目前准备舍弃 celery,简单用 mq 来做任务的分发了。被坑了两三次了,在这样下去 kpi 没了。
感谢各位。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.