6

所以我只是设置了 celery 和 rabbitmq,创建了我的用户,设置了虚拟主机,将用户映射到虚拟主机,并成功运行了 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。

提前感谢您的帮助。

4

2 回答 2

4

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

请从 github 的 master 分支中提取。如果它仍然不起作用,您可能必须停止rabbitmq,删除rabbitmq数据库目录(通常/var/lib/rabbitmq)并再次启动rabbitmq)

真的很抱歉给您带来不便。出现这个错误是因为我们最近将消费者路由密钥选项的名称更改为“绑定密钥”,但 amqp 库仍在使用routing_key,我们忘记重写该选项。

于 2010-01-27T10:41:32.083 回答
2

对于任何偶然发现此问题的人:即使更新 celery 后问题似乎消失了,删除 /var/lib/rabbitmq 似乎确实有帮助。在我这样做之前,我看到了很多不可靠性和不可预测性。

于 2010-11-24T15:50:51.450 回答