views:

698

answers:

2

I'm attempting to follow the celery tutorial, but I run into a problem when I run python manage.py celeryd: my RabbitMQ server (installed on a virtual machine on my dev box) won't let my user login.

I get the following on my Django management console:

[ERROR/MainProcess] AMQP Listener: Connection Error: Socket closed. Trying again in 2 seconds...

and this shows up in my rabbit.log file on my RabbitMQ server:

exception on TCP connection <0.5814.0> from $DJANGO_BOX_IP
{channel0_error,starting,{amqp,access_refused,"login refused for user '$CONFIGURED_USER'",'connection.start_ok'}}

I've double-checked my user, permissions, and vhost info, and they all seem to match up. Any help troubleshooting is greatly appreciated.

UPDATE: Following the advice of @asksol I get the following traceback:

$MY_VIRTUAL_ENV/lib/python2.6/site-packages/carrot/connection.pyc in connection(self)
    118             return
    119         if not self._connection:
--> 120             self._connection = self._establish_connection()
    121             self._closed = False
    122         return self._connection

$MY_VIRTUAL_ENV/lib/python2.6/site-packages/carrot/connection.pyc in _establish_connection(self)
    131 
    132     def _establish_connection(self):
--> 133         return self.create_backend().establish_connection()
    134 
    135     def get_backend_cls(self):

$MY_VIRTUAL_ENV/lib/python2.6/site-packages/carrot/backends/pyamqplib.pyc in establish_connection(self)
    110                                insist=conninfo.insist,
    111                                ssl=conninfo.ssl,
--> 112                                connect_timeout=conninfo.connect_timeout)
    113 
    114     def close_connection(self, connection):

$MY_VIRTUAL_ENV/lib/python2.6/site-packages/amqplib/client_0_8/connection.pyc in __init__(self, host, userid, password, login_method, login_response, virtual_host, locale, client_properties, ssl, insist, connect_timeout, **kwargs)
    138                 self.wait(allowed_methods=[
    139                     (10, 20), # secure
--> 140                     (10, 30), # tune
    141                     ])
    142 

$MY_VIRTUAL_ENV/lib/python2.6/site-packages/amqplib/client_0_8/abstract_channel.pyc in wait(self, allowed_methods)
     88         method_sig, args, content = self.connection._wait_method(
---> 89             self.channel_id, allowed_methods)
     90 
     91         if content \

$MY_VIRTUAL_ENV/lib/python2.6/site-packages/amqplib/client_0_8/connection.pyc in _wait_method(self, channel_id, allowed_methods)
    196         while True:
    197             channel, method_sig, args, content = \
--> 198                 self.method_reader.read_method()
    199 
    200             if (channel == channel_id) \

$MY_VIRTUAL_ENV/lib/python2.6/site-packages/amqplib/client_0_8/method_framing.pyc in read_method(self)
    213         m = self.queue.get()
    214         if isinstance(m, Exception):
--> 215             raise m
    216         return m
    217 

IOError: Socket closed
+2  A: 

Try getting hold of @asksol on twitter. I have emailed this link to him.

alexis
+3  A: 

Are you running django? If so, then try this:

>>> from carrot.connection import DjangoBrokerConnection
>>> c = DjangoBrokerConnection()
>>> c.connection

Does it give the same thing? Are you sure you're connecting to the right hostname, and that the username and password has access to the virtual host?

UPDATE:

>>> from carrot.connection import DjangoBrokerConnection
>>> c = DjangoBrokerConnection()
>>> for n in ("host", "userid", "password", "virtual_host", "ssl"):
...     print("%s -> %s" % (n, repr(getattr(c, n, None))))

UPDATE: You have to do the above before running c.connection, as the connection is established lazily in carrot.

asksol
I am running Django. Doing the above from the Django shell gives me a fairly long traceback and results in the following error: `IOError: Socket closed`. I'll update the question with the traceback.
Hank Gay
Ok, There must be something in the configuration that is wrong, host, vhost, permissions, username, password and so on. See updates to my answer for more troubleshooting.
asksol
Thanks. The login info was wrong: I got my virtualhost value in the setting for the password.
Hank Gay