运行celeryd时出错
我发这个问题(和答案)是为了让将来有同样问题的人能在网上找到解决办法。
如果你在Django中尝试像这样运行celeryd:
python manage.py celeryd
你可能会在它刚启动后立刻收到以下错误:
celery@eric-desktop-dev has started.
Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_manager(settings)
<... snip ...>
File "/usr/local/lib/python2.6/dist-packages/amqplib-0.6.1-py2.6.egg/amqplib/client_0_8/connection.py", line 134, in __init__
self._x_start_ok(d, login_method, login_response, locale)
File "/usr/local/lib/python2.6/dist-packages/amqplib-0.6.1-py2.6.egg/amqplib/client_0_8/connection.py", line 704, in _x_start_ok
args.write_longstr(response)
File "/usr/local/lib/python2.6/dist-packages/amqplib-0.6.1-py2.6.egg/amqplib/client_0_8/serialization.py", line 352, in write_longstr
self.write_long(len(s))
TypeError: object of type 'NoneType' has no len()
这个错误信息看起来很复杂,根本没有给出解决问题的线索。下面是答案,这样你就不会像我今天那样浪费很多时间在这个错误上了 :)
1 个回答
1
你在 settings.py
文件里缺少一个关于 celery 的设置。在我的情况下,这是因为我打错字了(我在 BROKER_PASSWORD 里漏掉了一个 'S')。仔细检查一下你是否包含了所有需要的设置,并且每个设置的拼写都正确,这样你就能避免像我今天那样出丑了 :)