Przeglądaj źródła

Add a block=True argument to TaskBucket.get and add TaskBucket.get_nowait

Ask Solem 15 lat temu
rodzic
commit
6f069dde0a
1 zmienionych plików z 5 dodań i 3 usunięć
  1. 5 3
      celery/buckets.py

+ 5 - 3
celery/buckets.py

@@ -102,7 +102,7 @@ class TaskBucket(object):
                 raise
                 raise
             return min(remainding_times), None
             return min(remainding_times), None
 
 
-    def get(self, timeout=None):
+    def get(self, block=True, timeout=None):
         """Retrive the task from the first available bucket.
         """Retrive the task from the first available bucket.
 
 
         Available as in, there is an item in the queue and you can
         Available as in, there is an item in the queue and you can
@@ -115,12 +115,14 @@ class TaskBucket(object):
         while True:
         while True:
             remainding_time, item = self._get()
             remainding_time, item = self._get()
             if remainding_time:
             if remainding_time:
-                if did_timeout():
+                if not block or did_timeout():
                     raise QueueEmpty
                     raise QueueEmpty
                 time.sleep(remainding_time)
                 time.sleep(remainding_time)
             else:
             else:
                 return item
                 return item
-    get_nowait = get
+
+    def get_nowait(self):
+        return self.get(block=False)
 
 
     def __old_get(self, block=True, timeout=None):
     def __old_get(self, block=True, timeout=None):
         time_spent = 0
         time_spent = 0