celery eventlet任务有很多套接字错误

时间:2011-06-20 17:22:51

标签: django celery django-celery eventlet

当使用--pool = eventlet选项运行我的芹菜工作者时,我从amqplib.client_0_8.method_framing.read_method获得了很多“IOError:Socket closed”异常。我也看到了很多来自eventlet.hubs.hub.switch的超时异常。

我正在使用类似于https://gist.github.com/821848的脚本的async_manage.py脚本,运行的工作如下:

./async_manage.py celeryd_detach -E --pool=eventlet --concurrency=120 --logfile=<path>

这是一个已知问题,还是我的配置或设置有问题?

我正在运行djcelery 2.2.4,Django 1.3和eventlet 0.9.15。

1 个答案:

答案 0 :(得分:5)

问题是一些阻止的代码的副作用。我设法使用http://unethicalblogger.com/2010/08/28/unclog-the-tubes-blocking-detection-in-eventlet.html

中描述的eventlet选项检测阻止代码

有两个地方发生阻塞:DNS查找和MySQL数据库访问。我设法解决了第一个安装dnspython包,第二个我在eventlet中使用了未记录的MySQLdb选项:

import eventlet
eventlet.monkey_patch()
eventlet.monkey_patch(MySQLdb=True)