Tôi tìm thấy phần còn lại của Kết nối do lỗi ngang hàng và giả sử RabbitMQ không lắng nghe trên cổng hoặc có tường lửa chặn nó. Đó không phải là trường hợp.
Chạy RabbitMQ trên Ubuntu 16.04.2 LTS, phiên bản được cài đặt bởi apt:3.5.7-1ubuntu0.16.04.1
Đầu ra của 'netstat -a' cho cổng 5672 của Rabbit trông giống như sau:
$ netstat -a|grep -i amqp
tcp6 0 0 [::]:amqp [::]:* LISTEN
Tuy nhiên, trên thực tế, Rabbit đã lắng nghe cả địa chỉ IPv4 và địa chỉ IPv6. Tôi đã xác minh điều này với netcat.
Để tiếp cận Rabbit từ một máy khác, bạn phải thiết lập một tài khoản người dùng với một cái gì đó giống như các lệnh sau:
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 .* .* .*
Vấn đề là URL của tôi. Của tôi trông giống như:
BROKER_URL = 'amqp://celery:[email protected]//'
Sau dấu gạch chéo áp chót đó là tên của vhost. Ở trên, tôi đã đặt tên cho vhost của mình là celery_vhost. Để kết nối, tôi cần thay đổi URL thành:
BROKER_URL = 'amqp://celery:[email protected]/celery_vhost'
Tôi phát hiện ra điều này khi Rabbit đăng nhập / var / log / Rabbitmq. Có một tệp .log chứa lỗi sau khi tôi nhập sai URL:
{handshake_error,opening,0,
{amqp_error,access_refused,
"access to vhost '/' refused for user 'celery'",
'connection.open'}}