RabbitMQ / Celery 在 Django 中延迟/就绪时挂起 - 没有有用的日志信息

6 投票
2 回答
2686 浏览
提问于 2025-04-15 18:29

我刚刚设置了celery和rabbitmq,创建了我的用户,设置了虚拟主机(vhost),把用户和虚拟主机关联起来,然后成功运行了celery守护进程(我想应该是成功了)。

(queuetest)corky@corky-server:~/projects/queuetest$ ./manage.py celeryd
 celery@corky-server v0.9.5 is starting.
 Configuration ->
. broker -> amqp://celery@localhost:5672/
. queues ->
. celery -> exchange:celery (direct) binding:celery
. concurrency -> 2
. loader -> celery.loaders.djangoapp
. logfile -> [stderr]@WARNING
. events -> OFF
. beat -> OFF

Celery has started.

我创建了一个叫“celery”的用户,因为这次我没什么特别的创意。

当我尝试在celery文档中做一个简单的例子时:

>>> from tasks import add
>>> r = add.delay(2, 2)
>>> r
<AsyncResult: 16235ea3-c7d6-4cce-9387-5c6285312c7c>
>>> r.ready()
(hangs for eternity.)

我查看了常见问题解答,想知道还有什么问题,它告诉我这是一个常见的错误,通常是因为用户权限的问题,所以我仔细检查了一遍权限,没发现问题,又创建了一个新用户,结果还是不行。如果我从DjangoBrokerConnection导入carrot.connection并获取信息,它和我在celery设置中的内容是匹配的。常见问题解答还建议检查日志文件。

我的rabbit.log文件在这种情况下并没有提供太多帮助,只是显示:

=INFO REPORT==== 26-Jan-2010::11:58:22 ===
accepted TCP connection on 0.0.0.0:5672 from 127.0.0.1:60572

=INFO REPORT==== 26-Jan-2010::11:58:22 ===
starting TCP connection <0.1120.0> from 127.0.0.1:60572

等等。到目前为止,我对我的问题感到很困惑,不知道还有什么其他原因。我正在运行Ubuntu Jaunty,并通过apt-get安装了RabbitMQ。

提前感谢任何帮助。

2 个回答

2

如果你碰巧看到这个:真的有帮助,删除你的 /var/lib/rabbitmq 文件夹,即使更新 celery 后问题似乎消失了。我之前遇到了很多不稳定和不可预测的情况,直到我这样做。

4

我刚刚修复了一个非常棘手的错误,这个错误只会出现在新用户身上,可能会导致这样的问题。 (http://github.com/ask/celery/commit/a9c1316b15055b67ee3c38d294461fa82ed6d2b5)

请从github的主分支拉取最新代码。如果还是不行,你可能需要先停止rabbitmq,然后删除rabbitmq的数据库目录(通常是/var/lib/rabbitmq),再重新启动rabbitmq。

真的很抱歉给你带来了麻烦。这个错误发生是因为我们最近把消费者的路由键选项的名字改成了“绑定键”,但是amqp库还是在用routing_key这个名字,我们忘了更新这个选项。

撰写回答