Browse Source

Don't sleep when the bucket is empty, rather wait for a task to be received

Ask Solem 14 năm trước cách đây
mục cha
commit
8dc7051de0
1 tập tin đã thay đổi với 5 bổ sung0 xóa
  1. 5 0
      celery/worker/buckets.py

+ 5 - 0
celery/worker/buckets.py

@@ -267,6 +267,9 @@ class TokenBucketQueue(object):
         """
         get = block and self.queue.get or self.queue.get_nowait
 
+        if not block and not self.items:
+            raise Empty()
+
         if not self._bucket.can_consume(1):
             raise RateLimitExceeded()
 
@@ -307,6 +310,8 @@ class TokenBucketQueue(object):
     def expected_time(self, tokens=1):
         """Returns the expected time in seconds of when a new token should be
         available."""
+        if not self.items:
+            return 0
         return self._bucket.expected_time(tokens)
 
     @property