Browse Source

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

Ask Solem 14 years ago
parent
commit
8dc7051de0
1 changed files with 5 additions and 0 deletions
  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
         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):
         if not self._bucket.can_consume(1):
             raise RateLimitExceeded()
             raise RateLimitExceeded()
 
 
@@ -307,6 +310,8 @@ class TokenBucketQueue(object):
     def expected_time(self, tokens=1):
     def expected_time(self, tokens=1):
         """Returns the expected time in seconds of when a new token should be
         """Returns the expected time in seconds of when a new token should be
         available."""
         available."""
+        if not self.items:
+            return 0
         return self._bucket.expected_time(tokens)
         return self._bucket.expected_time(tokens)
 
 
     @property
     @property