sql >> Database >  >> NoSQL >> Redis

Celery geeft verbindingsreset door peer

Ik vond de verbindingsrust door peer-fout en nam aan dat RabbitMQ niet op de poort luisterde of dat een firewall het blokkeerde. Dat was niet het geval.

RabbitMQ draaien op Ubuntu 16.04.2 LTS, versie geïnstalleerd door apt:3.5.7-1ubuntu0.16.04.1

De uitvoer van 'netstat -a' voor Rabbit's poort 5672 zag er als volgt uit:

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

Rabbit luisterde echter zowel op het IPv4-adres als het IPv6-adres. Ik heb dit geverifieerd met netcat.

Om Rabbit te bereiken vanaf een andere machine, moet je een gebruikersaccount aanmaken met zoiets als de volgende commando's:

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

Het probleem was mijn URL. De mijne zag eruit als:

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

Na die voorlaatste slash is de naam van de vhost. Hierboven heb ik mijn vhost de naam celery_vhost gegeven. Om verbinding te maken, moest ik de URL wijzigen in:

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

Ik ontdekte dit toen ik de Rabbit-logboeken in /var/log/rabbitmq bekeek. Er is een .log-bestand dat de volgende fout bevatte toen ik de verkeerde URL had:

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


  1. Het uitvoeren van batches van opdrachten met behulp van redis cli

  2. MongoDB - Aggregatie - Om unieke items in een array te krijgen

  3. Flask by example - Een Redis-taakwachtrij implementeren

  4. MongoDB:Hoe meerdere documenten bijwerken met één enkele opdracht?