【发布时间】:2011-09-18 21:23:40
【问题描述】:
在使用 --pool=eventlet 选项运行我的 celery worker 时,我从 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。
【问题讨论】:
-
你确定你的任务不会阻塞调用吗?
-
我正在修补每一个,但我不能 100% 确定没有任何东西阻塞。找出答案的最佳方法是什么?如果是,我该怎么办?
-
monkey 修补只修补 eventlet 知道如何修补的内容,因此您仍然可以使用未涵盖的库。例如,请参见此处:unethicalblogger.com/2010/08/28/…
-
我启用了阻塞检测,它偶尔会在 django/db/backends/__init__.py 中的“return self.connection.commit()”处阻塞 - 我正在使用 MySQL。有什么办法可以避免吗?
-
发现了未记录的 MySQLdb 选项到 monkey_patch - 现在做更多测试!
标签: django celery django-celery eventlet