2010-07-31 14 views
9

Bazı veri işleme görevlerini yürütmek için bir sıra olarak RabbitMQ üzerine Celery ile Django çalıştırıyorum. Bir kullanıcı ilk kez kaydolduğunda ve verilerini güncellemek için düzenli aralıklarla kereviz görevlerini başlatıyorum. Ancak, şu anda çevrimiçi olan kullanıcıları çalıştıran görevlere öncelik vermek isterim. Kerevizdeki görevler için öncelikli bir ortam olduğunu fark ettim, ama tavşanm bunu desteklemiyor gibi görünüyor. Bu iş parçacığı http://groups.google.com/group/celery-users/browse_thread/thread/ac3b6123d63421e5/b7740def1389e87e?lnk=gst&q=priority#b7740def1389e87e, iki farklı sıraya, yüksek öncelikli bir ve düşük öncelikli bir tane ya da daha düşük öncelikli görevler için bir hız sınırının ayarlanmasını önerir.RabbitMQ'da kereviz görevi önceliği için geçici çözüm?

Herhangi birinin önceliği uygulamak için iyi bir çözümü var mı? Şimdiden teşekkürler!

cevap

2

, sen acil görevleri zorlayabilir Bazı sıralar (derhal sıraya girelim) ve tüketici önceliklerini belirleriz, yani tüm tüketicilerin yüksek öncelikli acil kuyruktan görev almasına izin verin.

tüketici sonunda

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

, içinden tüketmek sıralarında x öncelikli bağımsız değişkeni tanımlayabilir.

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}), 
) 
: Aşağıdaki örnekte, tüketici öncelik 0 ile 10 öncelik

Örnek ile hipri gelen kereviz sırasından görevleri alır

İlgili konular