运行celeryd时出错

3 投票
1 回答
652 浏览
提问于 2025-04-15 23:25

我发这个问题(和答案)是为了让将来有同样问题的人能在网上找到解决办法。

如果你在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')。仔细检查一下你是否包含了所有需要的设置,并且每个设置的拼写都正确,这样你就能避免像我今天那样出丑了 :)

撰写回答