Example #1
0
 def make(cls, **kw):
     if 'rate_limit' in kw and kw['rate_limit']:
         kw['rate_limit'] = timeutils.rate(kw['rate_limit'])
         for key in ('capacity',):
             if key in kw and not kw[key]:
                 del kw[key]
         groupqueue = KTokenBucketGroupQueue(**kw)
     else:
         for key in ('rate_limit', 'capacity'):
             if key in kw:
                 del kw[key]
         groupqueue = KFastGroupQueue(**kw)
     return groupqueue
Example #2
0
    def update_bucket_for_type(self, task_name):
        task_type = self.task_registry[task_name]
        rate_limit = getattr(task_type, "rate_limit", None)
        rate_limit = timeutils.rate(rate_limit)
        task_queue = FastQueue()
        if task_name in self.buckets:
            task_queue = self._get_queue_for_type(task_name)
        else:
            task_queue = FastQueue()

        if rate_limit:
            task_queue = TokenBucketQueue(rate_limit, queue=task_queue)

        self.buckets[task_name] = task_queue
        return task_queue
Example #3
0
 def add_task_type(self, name):
     task_type = self.task_registry[name]
     limit = getattr(task_type, "rate_limit", None)
     limit = timeutils.rate(limit)
     bucket = self.buckets[name] = TokenBucket(limit, capacity=1) if limit else None
     return bucket