sql >> Base de Datos >  >> NoSQL >> Redis

Celery da restablecimiento de conexión por par

Encontré el resto de la conexión por error de pares, y asumí que RabbitMQ no estaba escuchando en el puerto o que había un firewall que lo bloqueaba. Ese no fue el caso.

Ejecutando RabbitMQ en Ubuntu 16.04.2 LTS, versión instalada por apt:3.5.7-1ubuntu0.16.04.1

La salida de 'netstat -a' para el puerto 5672 de Rabbit se veía así:

$ netstat -a|grep -i amqp
tcp6       0      0 [::]:amqp               [::]:*                  LISTEN

Sin embargo, Rabbit estaba escuchando tanto en la dirección IPv4 como en la dirección IPv6. Verifiqué esto con netcat.

Para comunicarse con Rabbit desde otra máquina, debe configurar una cuenta de usuario con algo como los siguientes comandos:

sudo rabbitmqctl add_user celery celerypassword
sudo rabbitmqctl add_vhost celery_vhost
sudo rabbitmqctl set_user_tags celery celerytag
sudo rabbitmqctl set_permissions -p celery_vhost celery .* .* .*

El problema era mi URL. El mío se parecía a:

BROKER_URL = 'amqp://celery:[email protected]//'

Después de la penúltima barra inclinada está el nombre del vhost. Arriba, le di a mi vhost el nombre celery_vhost. Para conectarme, necesitaba cambiar la URL a:

BROKER_URL = 'amqp://celery:[email protected]/celery_vhost'

Descubrí esto mirando los registros de Rabbit en /var/log/rabbitmq. Hay un archivo .log que contenía el siguiente error cuando tenía la URL incorrecta:

{handshake_error,opening,0,
{amqp_error,access_refused,
"access to vhost '/' refused for user 'celery'",
'connection.open'}}