我发布了这个问题(和回答),所以如果其他人在将来遇到这个问题,你就可以谷歌了。
如果您正试图在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()
一个相当神秘的错误消息,没有真正的线索来确定解决问题的方法。请参阅下面的答案,这样您就不会像我今天那样浪费大量时间来处理此错误:)
答案 0 :(得分:1)
您错过了settings.py
中的芹菜设置。在我的情况下,它是由一个错字引起的(我错过了BROKER_PASSWORD中的'S')。仔细检查你是否包含了所有必需的设置,并且每个设置都拼写正确,你将避免像我今天那样做自己的屁股:)