Merge pull request #2204 from jzelinskie/429builds

add rate limiting to build queues
This commit is contained in:
Jimmy Zelinskie 2016-12-07 15:03:31 -05:00 committed by GitHub
commit 00eafff747
7 changed files with 78 additions and 9 deletions

View file

@ -81,6 +81,19 @@ class WorkQueue(object):
._available_jobs(now, name_match_query)
.where(~(QueueItem.queue_name << running_query)))
def num_available_jobs_between(self, available_min_time, available_max_time, canonical_name_list):
"""
Returns the number of available queue items with a given prefix, between the two provided times.
"""
def strip_slash(name):
return name.lstrip('/')
canonical_name_list = map(strip_slash, canonical_name_list)
available = self._available_jobs(available_max_time,
'/'.join([self._queue_name] + canonical_name_list) + '%')
return available.where(QueueItem.available_after >= available_min_time).count()
def _name_match_query(self):
return '%s%%' % self._canonical_name([self._queue_name] + self._canonical_name_match_list)