用RabbitMQ启动django-celery发生致命错误[未知AMQP方法(10,60)]
问题描述:
我试图在django-celery与RabbitMQ进行分布式任务交谈的Debian服务器上设置Django实例。用RabbitMQ启动django-celery发生致命错误[未知AMQP方法(10,60)]
我可以设置RabbitMQ服务器,它会响应一个很好的状态,但只要芹菜与RabbitMQ联系,就会引发错误并关闭。这里是什么样子时,我尝试启动芹菜的开发实例:
[2013-03-08 16:59:23,707: WARNING/MainProcess] [email protected] ready.
[2013-03-08 16:59:23,725: INFO/MainProcess] consumer: Connected to amqp://[email protected]:5672//rabbit_vhost.
[2013-03-08 16:59:23,734: ERROR/MainProcess] Unrecoverable error: AMQPError('Unknown AMQP method (10, 60)', None, None, None, '')
Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/celery/worker/__init__.py", line 351, in start
component.start()
File "/usr/local/lib/python2.6/dist-packages/celery/worker/consumer.py", line 392, in start
self.reset_connection()
File "/usr/local/lib/python2.6/dist-packages/celery/worker/consumer.py", line 748, in reset_connection
self.reset_pidbox_node()
File "/usr/local/lib/python2.6/dist-packages/celery/worker/consumer.py", line 687, in reset_pidbox_node
callback=self.on_control,
File "/usr/local/lib/python2.6/dist-packages/kombu/pidbox.py", line 71, in listen
consumer.consume()
File "/usr/local/lib/python2.6/dist-packages/kombu/messaging.py", line 401, in consume
self._basic_consume(T, no_ack=no_ack, nowait=False)
File "/usr/local/lib/python2.6/dist-packages/kombu/messaging.py", line 522, in _basic_consume
no_ack=no_ack, nowait=nowait)
File "/usr/local/lib/python2.6/dist-packages/kombu/entity.py", line 571, in consume
nowait=nowait)
File "/usr/local/lib/python2.6/dist-packages/amqp/channel.py", line 1766, in basic_consume
(60, 21), # Channel.basic_consume_ok
File "/usr/local/lib/python2.6/dist-packages/amqp/abstract_channel.py", line 69, in wait
self.channel_id, allowed_methods)
File "/usr/local/lib/python2.6/dist-packages/amqp/connection.py", line 230, in _wait_method
self.wait()
File "/usr/local/lib/python2.6/dist-packages/amqp/abstract_channel.py", line 71, in wait
return self.dispatch_method(method_sig, args, content)
File "/usr/local/lib/python2.6/dist-packages/amqp/abstract_channel.py", line 85, in dispatch_method
raise AMQPError('Unknown AMQP method %r' % (method_sig,))
AMQPError: Unknown AMQP method (10, 60)
只是为了确认,我可以检查的RabbitMQ还在事后运行:
# rabbitmqctl status
Status of node [email protected] ...
[{running_applications,[{rabbit,"RabbitMQ","1.8.1"},
{mnesia,"MNESIA CXC 138 12","4.4.14"},
{os_mon,"CPO CXC 138 46","2.2.5"},
{sasl,"SASL CXC 138 11","2.1.9.2"},
{stdlib,"ERTS CXC 138 10","1.17"},
{kernel,"ERTS CXC 138 10","2.14"}]},
{nodes,[{disc,[[email protected]]}]},
{running_nodes,[[email protected]]}]
...done.
这是预防的最后一件事我从推出我的网站,并让我所有人都很疲惫,所以任何帮助将不胜感激!谢谢。
答
将kombu降级到2.4.7将会修复它。 rabbitmq-server不够新以支持AMQP 0-9-1。
答
我在Ubuntu上运行同样的问题。 看来(可能取决于Ubuntu版本)包含的RabbitMQ包可能已经过时。 而RabbitMQ installation guide指出这很有可能。因此,他们建议从他们的网站安装.deb软件包。
你是对的,谢谢!看起来这些人有同样的问题:[github问题](https://github.com/celery/django-celery/issues/217) – Lou 2013-03-09 02:57:55