2012-04-21 34 views
40

Tôi mới sử dụng cần tây.Tôi biết cách cài đặt và chạy một máy chủ nhưng tôi cần phân phối tác vụ cho nhiều máy. Dự án của tôi sử dụng cần tây để gán các yêu cầu của người dùng chuyển đến một khung công tác web cho các máy khác nhau và sau đó trả lại kết quả. Tôi đã đọc tài liệu nhưng không đề cập đến cách thiết lập nhiều máy. Tôi đang thiếu gì?Làm thế nào để thiết lập công nhân cần tây trên các máy riêng biệt?

Trả lời

37

Hiểu biết của tôi là ứng dụng của bạn sẽ đẩy yêu cầu vào hệ thống xếp hàng (ví dụ: rabbitMQ) và sau đó bạn có thể bắt đầu bất kỳ số lượng nhân viên nào trên các máy khác nhau (có quyền truy cập vào cùng mã với ứng dụng đã gửi tác vụ). Họ sẽ chọn ra các nhiệm vụ từ hàng đợi tin nhắn và sau đó làm việc với họ. Sau khi hoàn thành, họ sẽ cập nhật cơ sở dữ liệu bia mộ.

Kết quả của việc này là bạn không phải làm bất cứ điều gì đặc biệt để bắt đầu nhiều công nhân. Chỉ cần bắt đầu chúng trên các máy giống hệt nhau (cùng một cây nguồn) giống hệt nhau.

Máy chủ có hàng đợi tin nhắn không được giống với máy chủ có nhân viên và không cần giống như máy gửi công việc. Bạn chỉ cần đặt vị trí của hàng đợi tin nhắn trong celeryconfig.py của bạn và tất cả các công nhân trên tất cả các máy có thể nhận công việc từ hàng đợi để thực hiện các tác vụ.

+0

Nhưng làm thế nào để máy chủ chính biết về tất cả các công nhân? –

+0

Bạn có ý nghĩa gì với "máy chủ chính"? –

+0

@ I'mTravelerClown tôi nghĩ rằng bạn bối rối một môi trường phân tán với một bậc thầy - nô lệ một. Không có máy chủ chính trong môi trường dựa trên cần tây nhưng nhiều nút với công nhân làm các chất liệu. Bạn có thể cần phải giải thích vấn đề của mình tốt hơn. – FlaPer87

0

Con đường tôi triển khai nó là như thế này:

  1. bản sao dự án django của bạn trên một trường hợp Heroku (điều này sẽ chạy frontend)
  2. thêm RabitMQ như một add on và cấu hình nó
  3. bản sao dự án django của bạn vào một trường hợp heroku khác (gọi nó là công nhân), nơi bạn sẽ chạy các nhiệm vụ cần tây
Các vấn đề liên quan