RabbitMQ gibt ein Fehler „Zugriff verweigert, Anmeldung für den Benutzer verweigert“ beim Versuch, den Sellerie Tutorial zu folgen
Frage
Ich versuche, die Sellerie Tutorial zu folgen, aber ich laufen ein Problem, wenn ich in laufen python manage.py celeryd
: mein RabbitMQ Server (auf einer virtuelle Maschine auf meiner dev-Box installiert ist) wird meine Benutzeranmeldung nicht zulassen
Ich habe das folgende auf meiner Django-Management-Konsole:
[ERROR/MainProcess] AMQP Listener: Connection Error: Socket closed. Trying again in 2 seconds...
und dies zeigt, in meiner rabbit.log
Datei auf meinem 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'}}
Ich habe doppelt überprüft meine Benutzer, Berechtigungen und vHost Info, und sie alle scheinen bis zu entsprechen. Jede Hilfe zur Fehlerbehebung wird sehr geschätzt.
UPDATE: Im Anschluss an die Beratung von @asksol ich folgenden Zurückverfolgungs erhalten:
$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
Lösung
Sind Sie mit django? Wenn ja, dann versuchen Sie dies:
>>> from carrot.connection import DjangoBrokerConnection
>>> c = DjangoBrokerConnection()
>>> c.connection
Ist es die gleiche Sache geben? Sind Sie sicher, dass Sie den richtigen Hostnamen sich verbinden, und dass der Benutzername und Passwort Zugriff auf den virtuellen Host hat?
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:. Sie haben die oben zu tun, bevor c.connection läuft, wie die Verbindung in Karotte lazily hergestellt ist