Ich habe den Connection-Rest-by-Peer-Fehler gefunden und angenommen, dass RabbitMQ den Port nicht abhört oder dass eine Firewall ihn blockiert. Das war nicht der Fall.
Ausführen von RabbitMQ auf Ubuntu 16.04.2 LTS, Version installiert von apt:3.5.7-1ubuntu0.16.04.1
Die Ausgabe von 'netstat -a' für Rabbits Port 5672 sah so aus:
$ netstat -a|grep -i amqp
tcp6 0 0 [::]:amqp [::]:* LISTEN
Tatsächlich hat Rabbit jedoch sowohl die IPv4-Adresse als auch die IPv6-Adresse abgehört. Ich habe dies mit netcat überprüft.
Um Rabbit von einem anderen Computer aus zu erreichen, müssen Sie ein Benutzerkonto mit etwa den folgenden Befehlen einrichten:
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 .* .* .*
Das Problem war meine URL. Meins sah so aus:
BROKER_URL = 'amqp://celery:[email protected]//'
Nach diesem vorletzten Schrägstrich steht der Name des vhost. Oben habe ich meinem vhost den Namen celery_vhost gegeben. Um eine Verbindung herzustellen, musste ich die URL ändern in:
BROKER_URL = 'amqp://celery:[email protected]/celery_vhost'
Ich habe dies entdeckt, als ich mir die Rabbit-Protokolle in /var/log/rabbitmq angesehen habe. Es gibt eine .log-Datei, die den folgenden Fehler enthielt, als ich die falsche URL hatte:
{handshake_error,opening,0,
{amqp_error,access_refused,
"access to vhost '/' refused for user 'celery'",
'connection.open'}}