浏览代码

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: