2011-09-17 36 views
8

Tôi đang cố gắng triển khai kịch bản sau với Celery: hai hàng đợi (cùng) nhiệm vụ dài hạn, một cho "bình thường" và khác cho ưu tiên "nhàn rỗi".Thực hiện hàng đợi ưu tiên "nhàn rỗi" và "bình thường" cho các nhiệm vụ dài hạn trong Celery

Tôi sẽ làm cho người lao động theo dõi cả hàng đợi và nhận nhiệm vụ từ hàng đợi ưu tiên "bình thường" trước và nếu nó trống, nó sẽ nhận nhiệm vụ từ ưu tiên "nhàn rỗi".

Câu hỏi của tôi là: Có thể đảm bảo thứ tự mà người lao động sẽ kiểm tra hàng đợi công việc của họ không? Ngoài ra, đây có phải là phương pháp phù hợp để thực hiện các ưu tiên không?

Bối cảnh: Các tác vụ đang chạy công việc chuyển mã ffmpeg. Những ưu tiên "bình thường" sẽ là video mới sắp ra mắt (phải được chuyển mã ASAP) và ưu tiên "nhàn rỗi" sẽ là nhiệm vụ chuyển mã lưu trữ cũ (40.000+ video) sang cài đặt định dạng được cập nhật. Tôi không có một số máy chủ có sẵn để thực hiện gửi nhiệm vụ đa nhiệm vụ.

Trả lời

1

Theo lý thuyết rằng công nhân nhàn rỗi không tiêu thụ nhiều tài nguyên hệ thống, tôi đã thực hiện hai ưu tiên với một trao đổi thứ hai, một bộ thứ hai của hàng đợi và một nhóm công nhân thứ hai. Tôi không có quá trình làm việc chuyên sâu như vậy vì vậy tôi không làm cho bộ công nhân thứ hai của tôi tăng tốc khi tập đầu tiên hoạt động, nhưng có thể lệnh renice UNIX sẽ làm việc cho việc này.

Bạn cũng có thể làm điều gì đó với hàng đợi kiểm soát để công nhân không nhận được yêu cầu công việc, họ cũng cần nhận mã thông báo từ hàng đợi kiểm soát. Sau đó, bạn nhổ ra một số lượng nhỏ các mã thông báo cho hàng đợi kiểm soát nhàn rỗi nhưng một số lượng lớn các mã thông báo đến hàng đợi kiểm soát thông thường.

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