所以我在具有集群rabbitmq后端的多台服务器上运行celery。最近,我对 celery 所做的任何事情都开始无限期地挂起,检查rabbitmq 的日志为我提供了这个晦涩的错误消息:
=ERROR REPORT==== 20-Mar-2013::23:52:25 ===
connection <0.15823.3>, channel 1 - soft error:
{amqp_error,not_found,
"no binding i-69995906 between exchange 'i-69995906' in vhost 'celery' and queue 'i-69995906' in vhost 'celery'",
'queue.bind'}
运行rabbitmqctl list_bindings给我这个:
# rabbitmqctl list_bindings -p celery
Listing bindings ...
exchange celery queue celery []
celery exchange celery queue celery []
...done.
我需要做什么才能消除错误?我已经重新启动了Rabbitmq,重新安装了Rabbitmq,并删除并恢复了集群。我猜我需要恢复预先存在的绑定(bind),但我不知道如何从rabbitmqctl或celery恢复。如果这不起作用,我的 celery 任务就根本不起作用。
最佳答案
谢谢你的提问。我最终到达了完全相同的地方。
我能够通过删除虚拟主机并重新创建它来纠正此问题
rabbitmqctl delete_vhost celery
rabbitmqctl add_vhost celery
rabbitmqctl set_permissions -p celery <user> ".*" ".*" ".*"
关于rabbitmq - 如何修复这个rabbitmq/celery错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15537129/