2014-09-16 20 views
10

Ich fange an, Sellerie zu verwenden, indem ich dieser "First Steps with Celery" folge. Ich habe genau die auf diesem Link angegebene tasks.py verwendet. Allerdings, wenn ich die Aufgabe, lief mit,Sellerie: Fehler beim Verbinden mit RabbitMQ Server

celery -A tasks worker --loglevel=info 

Ich erhalte diese Fehlermeldung:

[2014-09-16 20:52:57,427: ERROR/MainProcess] consumer: Cannot connect to amqp://guest:**@127.0.0.1:5672//: Socket closed. Trying again in 2.00 seconds... 

Der rabbitmq Server sicher läuft und unten ist der Ausschnitt aus dem Protokoll über den Fehler:

=ERROR REPORT==== 16-Sep-2014::20:53:09 === 
exception on TCP connection <0.235.0> from 127.0.0.1:58162 
{channel0_error,starting, 
      {amqp_error,access_refused, 
         "AMQPLAIN login refused: user 'guest' - invalid credentials", 
         'connection.start_ok'}} 

=INFO REPORT==== 16-Sep-2014::20:53:09 === 
closing TCP connection <0.235.0> from 127.0.0.1:58162 

=INFO REPORT==== 16-Sep-2014::20:53:15 === 
accepted TCP connection on [::]:5672 from 127.0.0.1:58163 

=INFO REPORT==== 16-Sep-2014::20:53:15 === 
starting TCP connection <0.239.0> from 127.0.0.1:58163 

=ERROR REPORT==== 16-Sep-2014::20:53:18 === 
exception on TCP connection <0.239.0> from 127.0.0.1:58163 
{channel0_error,starting, 
      {amqp_error,access_refused, 
         "AMQPLAIN login refused: user 'guest' - invalid credentials", 
         'connection.start_ok'}} 

=INFO REPORT==== 16-Sep-2014::20:53:18 === 
closing TCP connection <0.239.0> from 127.0.0.1:58163 

damit habe ich folgendes zu gewährleisten, dass die ‚Gast‘ Benutzerberechtigungen/vhost haben:

sudo rabbitmqctl set_permissions -p/guest ".*" ".*" ".*" 

Und dann habe ich rabbitmq service neu geladen/neu gestartet, um sicherzustellen, dass die Änderungen wirksam werden, dann lief die Aufgabe erneut. Der Fehler ist jedoch immer noch derselbe.

Ich habe sogar versucht, eine andere vhost (jm-vhost) und Benutzer erstellen (jm-user1) und stellen Sie die Erlaubnis wieder alle zu ermöglichen:

sudo rabbitmqctl add_vhost jm-vhost 
sudo rabbitmqctl add_user jm-user1 "" --> "" to make it passwordless (is this correct?) 
sudo rabbitmqctl set_permissions -p /jm-vhost jm-user1 ".*" ".*" ".*" 

Und dann geändert tasks.py dazu:

app = Celery('tasks', broker='amqp://[email protected]//jm-vhost') 

Aber als ich die Aufgaben gestartet habe, bekomme ich immer noch den gleichen Fehler. Wie soll ich das beheben? Danke im Voraus!

Antwort

17

Ich konnte dies lösen (für diejenigen, die das gleiche Problem haben und haben werden), indem Sie Folgendes tun.

Ich habe den Benutzer, den ich bei meiner Frage erwähnt habe, neu erstellt, aber dieses Mal mit einem Passwort. Wie folgt aus:

sudo rabbitmqctl add_user jm-user1 sample 

Dann habe ich die Berechtigungen wieder mit diesem:

sudo rabbitmqctl set_permissions -p jm-vhost jm-user1 ".*" ".*" ".*" 

Neu gestartet rabbitmq Server um sicherzustellen, dass die Änderungen wirksam werden und Modifikationen an tasks.py:

app = Celery('tasks', broker='amqp://jm-user1:[email protected]/jm-vhost') 

Wenn ich lief,

celery -A tasks worker --loglevel=info 

hat es funktioniert :).

Hoffentlich wird dies anderen helfen. Danke Jungs!

+0

Dank Knospe, dass der Trick auch für mich getan hat! – maz

+0

Eine andere Sache, die ich gefunden habe ist, dass, wenn Sie dies programmgesteuert tun möchten, verwenden Sie diese Syntax, genau so: subprocess.call (['rabbitmqctl', 'set_permissions', '-p', 'vhost_name', 'joe_user' , '. *', '. *', '. *']) – maz

+0

Es hat mir definitiv geholfen. Vielen Dank! –

Verwandte Themen