2014-09-16 6 views
10

Я начинаю использовать сельдерей, следуя этому "First Steps with Celery". Я точно использовал tasks.py, указанный в этой ссылке. Однако, когда я запускал задачу, используя,Сельдерей: ошибка при подключении к серверу RabbitMQ

celery -A tasks worker --loglevel=info 

Я получаю эту ошибку:

[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... 

Сервер RabbitMQ наверняка работает и ниже фрагмент кода журнала относительно ошибки:

=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 

с этим, я сделал следующее, чтобы гарантировать, что «гость» пользователь имеет разрешения на/виртуальный хост:

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

И затем я перезагрузил/перезапустил службу rabbitmq, чтобы изменения вступили в силу, затем снова выполнил задачу. Однако ошибка остается прежней.

Я даже попытался создать другой виртуальный хост (JM-виртуальный хост) и пользователь (JM-user1) и установите разрешение снова разрешить все:

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 ".*" ".*" ".*" 

И затем модифицирован tasks.py к этому:

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

Но когда я начал выполнять задачи, я все равно получаю ту же ошибку. Как мне это разрешить? Заранее спасибо!

ответ

17

Я смог решить эту проблему (для тех, кто имеет и будет иметь такую ​​же проблему), выполнив следующее.

Я воссоздал пользователя, которого я упомянул по моему вопросу, но на этот раз с паролем. Как это:

sudo rabbitmqctl add_user jm-user1 sample 

Затем я установил разрешения снова с этим:

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

Restarted RabbitMQ сервер, чтобы убедиться, что изменения вступили в силу и внесены изменения в tasks.py:

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

Когда я бежал,

celery -A tasks worker --loglevel=info 

это сработало :).

Надеюсь, это поможет другим. Спасибо, ребята!

+0

Спасибо бутон, что сделал трюк для меня тоже! – maz

+0

Еще одна вещь, которую я нашел, заключается в том, что если вы хотите сделать это программно, используйте этот синтаксис, например: subprocess.call (['rabbitmqctl', 'set_permissions', '-p', 'vhost_name', 'joe_user' , '. *', '. *', '. *']) – maz

+0

Это определенно помогло мне. Благодаря! –

Смежные вопросы