2014-09-16 25 views
10

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!

Trả lời

17

Tôi đã có thể giải quyết vấn đề này (đối với những người có và sẽ có cùng một vấn đề) bằng cách thực hiện như sau.

Tôi đã tạo lại người dùng tôi đã đề cập trong câu hỏi của mình, nhưng lần này bằng mật khẩu. Như thế này:

sudo rabbitmqctl add_user jm-user1 sample 

Sau đó, tôi thiết lập cho phép một lần nữa với điều này:

sudo rabbitmqctl set_permissions -p jm-vhost jm-user1 ".*" ".*" ".*" 

Khởi động lại máy chủ RabbitMQ để đảm bảo các thay đổi có hiệu lực thi hành và thực hiện sửa đổi tasks.py:

app = Celery('tasks', broker='amqp://jm-user1:[email protected]/jm-vhost') 

Khi tôi chạy,

celery -A tasks worker --loglevel=info 

nó hoạt động :).

Hy vọng rằng điều này sẽ giúp ích cho người khác. Xin cảm ơn các bạn!

+0

Cảm ơn nụ, mà đã làm các trick cho tôi quá! – maz

+0

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

+0

Nó chắc chắn đã giúp tôi. Cảm ơn! –

Các vấn đề liên quan