2010-07-31 34 views
9

Tôi đang chạy Django với Celery trên đầu trang của RabbitMQ như một hàng đợi để xử lý một số nhiệm vụ xử lý dữ liệu. Tôi đang khởi động các nhiệm vụ cần tây khi người dùng đăng ký lần đầu tiên, cũng như định kỳ cập nhật dữ liệu của họ. Tuy nhiên, tôi muốn tất nhiên ưu tiên cho các nhiệm vụ đang chạy những người dùng hiện đang trực tuyến. Tôi nhận thấy có một thiết lập ưu tiên cho các nhiệm vụ trong cần tây, nhưng có vẻ như thỏmq không hỗ trợ điều này. Chủ đề này http://groups.google.com/group/celery-users/browse_thread/thread/ac3b6123d63421e5/b7740def1389e87e?lnk=gst&q=priority#b7740def1389e87e đề xuất có hai hàng đợi khác nhau, hàng ưu tiên cao và ưu tiên thấp, hoặc đặt giới hạn tốc độ cho các tác vụ ưu tiên thấp hơn.Giải quyết vấn đề ưu tiên cho công việc cần tây trên RabbitMQ?

Có ai có giải pháp tốt để thực hiện mức độ ưu tiên không? Cảm ơn trước!

Trả lời

2

Ngoài ra, bạn có thể đẩy nhiệm vụ cấp bách để một số hàng đợi (giả sử hàng đợi khẩn cấp) và đặt mức độ ưu tiên của người tiêu dùng, tức là, cho phép tất cả người tiêu dùng nhận nhiệm vụ từ hàng đợi khẩn cấp với mức độ ưu tiên cao.

https://github.com/celery/celery/issues/3098

Cuối cùng người tiêu dùng, bạn có thể xác lập luận x-ưu tiên trong hàng đợi để tiêu thụ từ. Trong ví dụ dưới đây, người tiêu dùng nhặt nhiệm vụ từ hàng đợi cần tây với ưu tiên 0 và từ hipri với ưu tiên 10

Ví dụ:

CELERY_QUEUES = (
    Queue('celery', Exchange('celery', type='direct'), routing_key='celery', 
      consumer_arguments={'x-priority': 0}), 
    Queue('hipri', Exchange('hipri', type='direct'), routing_key='hipri', 
      consumer_arguments={'x-priority': 10}), 
) 
Các vấn đề liên quan