RabbitMQ / Celery 在 Django 中延迟/就绪时挂起 - 没有有用的日志信息
我刚刚设置了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 个回答
如果你碰巧看到这个:真的有帮助,删除你的 /var/lib/rabbitmq 文件夹,即使更新 celery 后问题似乎消失了。我之前遇到了很多不稳定和不可预测的情况,直到我这样做。
我刚刚修复了一个非常棘手的错误,这个错误只会出现在新用户身上,可能会导致这样的问题。 (http://github.com/ask/celery/commit/a9c1316b15055b67ee3c38d294461fa82ed6d2b5)
请从github的主分支拉取最新代码。如果还是不行,你可能需要先停止rabbitmq,然后删除rabbitmq的数据库目录(通常是/var/lib/rabbitmq
),再重新启动rabbitmq。
真的很抱歉给你带来了麻烦。这个错误发生是因为我们最近把消费者的路由键选项的名字改成了“绑定键”,但是amqp库还是在用routing_key
这个名字,我们忘了更新这个选项。