2009-12-10 3 views
4

Je tente de suivre le celery tutorial, mais je rencontre un problème lorsque je cours python manage.py celeryd: mon serveur RabbitMQ (installé sur un machine virtuelle sur ma boîte de dev) ne permettra pas à mon utilisateur de se connecter.RabbitMQ donne une erreur «accès refusé, connexion refusée pour l'utilisateur» lorsque vous essayez de suivre le tutoriel de céleri

je reçois ce qui suit sur ma console de gestion Django:

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

et cela se voit dans mon dossier rabbit.log sur mon serveur RabbitMQ:

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'}} 

J'ai revérifié mon utilisateur, permissions, et infos vhost, et ils semblent tous correspondre. Toute aide dépannage est grandement appréciée.

MISE À JOUR: les conseils de @asksol je reçois le retraçage suivant:

$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 

Répondre

5

Courez-vous django? Si oui, essayez ceci:

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

-t-il donner la même chose? Etes-vous sûr de vous connecter au bon nom d'hôte, et que le nom d'utilisateur et le mot de passe ont accès à l'hôte virtuel?

MISE À JOUR:

>>> 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)))) 

MISE À JOUR: Vous devez faire ce qui précède avant d'exécuter c.connection, comme la connexion est établie paresseusement dans la carotte.

+0

Je cours Django. Faire ce qui précède à partir du shell Django me donne une traceback assez longue et donne l'erreur suivante: 'IOError: Socket closed'. Je vais mettre à jour la question avec le retraçage. –

+1

Ok, Il doit y avoir quelque chose dans la configuration qui est faux, hôte, vhost, permissions, nom d'utilisateur, mot de passe et ainsi de suite. Voir les mises à jour de ma réponse pour plus de dépannage. – asksol

+0

Merci. Les informations de connexion étaient erronées: j'ai obtenu ma valeur virtualhost dans le paramétrage du mot de passe. –

Questions connexes