Сельдерей: ошибка при подключении к серверу RabbitMQ

Я начинаю использовать сельдерей, следуя этим "Первые шаги с сельдереем" . Я точно использовал tasks.py, указанный в этой ссылке. Однако, когда я запускал задачу, используя

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

С этим я сделал следующее, чтобы гарантировать, что у пользователя "guest" есть разрешения на /vhost:

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

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

Я даже попытался создать другой vhost (jm-vhost) и пользователя (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')

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

Ответ 1

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

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

sudo rabbitmqctl add_user jm-user1 sample

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

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

Перезагруженный сервер rabbitmq, чтобы убедиться, что изменения вступили в силу и внесли изменения в tasks.py:

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

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

celery -A tasks worker --loglevel=info

он работал:).

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