Tôi bắt đầu sử dụng cần tây bằng cách theo dõi "First Steps with Celery" này. Tôi đã sử dụng chính xác tasks.py được chỉ ra trên liên kết đó. Tuy nhiên khi tôi chạy nhiệm vụ sử dụng,Cần tây: Lỗi khi kết nối với Máy chủ RabbitMQ
celery -A tasks worker --loglevel=info
Tôi nhận được lỗi này:
[2014-09-16 20:52:57,427: ERROR/MainProcess] consumer: Cannot connect to amqp://guest:**@127.0.0.1:5672//: Socket closed. Trying again in 2.00 seconds...
Máy chủ RabbitMQ là chắc chắn chạy và dưới đây là đoạn nhật ký về các lỗi:
=ERROR REPORT==== 16-Sep-2014::20:53:09 ===
exception on TCP connection <0.235.0> from 127.0.0.1:58162
{channel0_error,starting,
{amqp_error,access_refused,
"AMQPLAIN login refused: user 'guest' - invalid credentials",
'connection.start_ok'}}
=INFO REPORT==== 16-Sep-2014::20:53:09 ===
closing TCP connection <0.235.0> from 127.0.0.1:58162
=INFO REPORT==== 16-Sep-2014::20:53:15 ===
accepted TCP connection on [::]:5672 from 127.0.0.1:58163
=INFO REPORT==== 16-Sep-2014::20:53:15 ===
starting TCP connection <0.239.0> from 127.0.0.1:58163
=ERROR REPORT==== 16-Sep-2014::20:53:18 ===
exception on TCP connection <0.239.0> from 127.0.0.1:58163
{channel0_error,starting,
{amqp_error,access_refused,
"AMQPLAIN login refused: user 'guest' - invalid credentials",
'connection.start_ok'}}
=INFO REPORT==== 16-Sep-2014::20:53:18 ===
closing TCP connection <0.239.0> from 127.0.0.1:58163
Với điều này, tôi đã làm như sau để đảm bảo rằng người dùng 'khách' có quyền truy cập/vhost:
sudo rabbitmqctl set_permissions -p/guest ".*" ".*" ".*"
Và sau đó tôi tải lại/khởi động lại dịch vụ thỏmq để đảm bảo thay đổi sẽ có hiệu lực, sau đó chạy lại tác vụ. Tuy nhiên, lỗi vẫn như cũ.
Tôi thậm chí đã cố gắng tạo ra một vhost khác nhau (jm-vhost) và người sử dụng (jm-user1) và thiết lập sự cho phép một lần nữa để cho phép tất cả:
sudo rabbitmqctl add_vhost jm-vhost
sudo rabbitmqctl add_user jm-user1 "" --> "" to make it passwordless (is this correct?)
sudo rabbitmqctl set_permissions -p /jm-vhost jm-user1 ".*" ".*" ".*"
Và tasks.py sau đó được sửa đổi như sau:
app = Celery('tasks', broker='amqp://[email protected]//jm-vhost')
Nhưng khi tôi bắt đầu nhiệm vụ, tôi vẫn gặp lỗi tương tự. Tôi nên giải quyết vấn đề này bằng cách nào? Cảm ơn trước!
Cảm ơn nụ, mà đã làm các trick cho tôi quá! – maz
Một điều tôi đã tìm thấy là nếu bạn muốn làm điều này lập trình, sử dụng cú pháp này, giống như thế này: subprocess.call (['rabbitmqctl', 'set_permissions', '-p', 'vhost_name', 'joe_user' , '. *', '. *', '. *']) – maz
Nó chắc chắn đã giúp tôi. Cảm ơn! –