所以我只是设置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。
提前感谢您的帮助。
答案 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,即使问题似乎随着更新芹菜而消失。在我这样做之前,我看到了许多不可靠和不可预测性。