فهرست منبع

Allow setting the Tasks queue type for the rate limiter, so it can be set to LifoQueue

Ask Solem 15 سال پیش
والد
کامیت
79cd3fb5b1
2فایلهای تغییر یافته به همراه3 افزوده شده و 1 حذف شده
  1. 2 0
      celery/task/base.py
  2. 1 1
      celery/worker/buckets.py

+ 2 - 0
celery/task/base.py

@@ -1,5 +1,6 @@
 import sys
 from datetime import timedelta
+from Queue import Queue
 
 from carrot.connection import DjangoBrokerConnection
 
@@ -149,6 +150,7 @@ class Task(object):
     default_retry_delay = 3 * 60
     serializer = conf.TASK_SERIALIZER
     rate_limit = conf.DEFAULT_RATE_LIMIT
+    rate_limit_queue_type = Queue
     backend = default_backend
 
     MaxRetriesExceededError = MaxRetriesExceededError

+ 1 - 1
celery/worker/buckets.py

@@ -153,7 +153,7 @@ class TaskBucket(object):
         if task_name in self.buckets:
             return
         task_type = self.task_registry[task_name]
-        task_queue = Queue()
+        task_queue = task_type.rate_limit_queue_type()
         rate_limit = getattr(task_type, "rate_limit", None)
         rate_limit = parse_ratelimit_string(rate_limit)
         if rate_limit: