RabbitMQ / Celery与Django挂起延迟/准备/等 - 没有有用的日志信息

时间:2010-01-26 17:08:36

标签: python django rabbitmq celery

所以我只是设置celery和rabbitmq,创建我的用户,设置vhost,将用户映射到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.

我创建了一个“芹菜”的用户,因为在这种情况下我感觉不是很有创造力。

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

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

所以我检查了常见问题解答,想知道还有什么可能,并且它告诉我这是一个由于用户权限而导致的常见错误,所以我三重检查了那些,没有,做了另一个新用户,仍然没有。如果我从DjangoBrokerConnection导入carrot.connection并获取相关信息,则会与我的芹菜设置中的内容相匹配。常见问题解答说明要检查您的日志文件。

我的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 个答案:

答案 0 :(得分:4)

我刚刚修复了一个非常丑陋的bug,它只会出现会导致这种情况的新用户。 (http://github.com/ask/celery/commit/a9c1316b15055b67ee3c38d294461fa82ed6d2b5

请从github的主分支处取出。如果它仍然不起作用 可能要停止rabbitmq,删除rabbitmq数据库目录(通常是/var/lib/rabbitmq)并再次启动rabbitmq)

真的很抱歉给您带来不便。 发生错误的原因是我们最近将使用者路由键选项的名称更改为“绑定键”,但amqp库仍然使用routing_key,我们忘记重写该选项。

答案 1 :(得分:2)

对于任何磕磕绊绊的人:它确实似乎有助于删除你的/ var / lib / rabbitmq,即使问题似乎随着更新芹菜而消失。在我这样做之前,我看到了许多不可靠和不可预测性。