I'm trying to set up an instance of Django on a debian server with django-celery talking to RabbitMQ for distributed tasks.
I can get the RabbitMQ server set up and it'll respond with a good status, but as soon as celery makes contact with RabbitMQ, it throws an error and shuts down. Here's what it looks like when I try to start a dev instance of celery:
[2013-03-08 16:59:23,707: WARNING/MainProcess] celery@myserver 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)
Just to confirm, I can check that RabbitMQ is still running afterwards:
# rabbitmqctl status
Status of node rabbit@myserver ...
[{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,[rabbit@myserver]}]},
{running_nodes,[rabbit@myserver]}]
...done.
This is the last thing preventing me from launching my site and has me all frazzled, so any help would be greatly appreciated! Thanks.
Downgrading kombu to 2.4.7 will fix it. The rabbitmq-server is not new enough to support AMQP 0-9-1.
I ran with the same problem in Ubuntu. It appears that (possibly depending on the Ubuntu version) the included RabbitMQ packages might be a outdated. And the RabbitMQ installation guide states that this is quite possible. Thus they recommend installing the .deb package from their web site.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With