Намерих връзката за почивка от партньорска грешка и предположих, че RabbitMQ не слуша порта или има защитна стена, която го блокира. Това не беше така.
Работи RabbitMQ на Ubuntu 16.04.2 LTS, версия, инсталирана от apt:3.5.7-1ubuntu0.16.04.1
Резултатът от 'netstat -a' за порт на Rabbit 5672 изглеждаше така:
$ netstat -a|grep -i amqp
tcp6 0 0 [::]:amqp [::]:* LISTEN
Въпреки това, Rabbit всъщност слушаше както IPv4 адреса, така и IPv6 адреса. Проверих това с netcat.
За да достигнете до Rabbit от друга машина, трябва да настроите потребителски акаунт с нещо като следните команди:
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 .* .* .*
Проблемът беше моят URL адрес. Моят изглеждаше така:
BROKER_URL = 'amqp://celery:[email protected]//'
След тази предпоследна наклонена черта е името на vhost. По-горе дадох на моя vhost името celery_vhost. За да се свържа, трябваше да променя URL адреса на:
BROKER_URL = 'amqp://celery:[email protected]/celery_vhost'
Открих това, гледайки логовете на Rabbit в /var/log/rabbitmq. Има файл .log, който съдържаше следната грешка, когато имах грешен URL:
{handshake_error,opening,0,
{amqp_error,access_refused,
"access to vhost '/' refused for user 'celery'",
'connection.open'}}