diff --git a/data/queue.py b/data/queue.py index 9c27cc839..720f84beb 100644 --- a/data/queue.py +++ b/data/queue.py @@ -52,12 +52,13 @@ class WorkQueue(object): @classmethod def _available_jobs(cls, now, name_match_query): - return cls._available_jobs_where(QueueItem.select(), now, name_match_query) + return (cls + ._available_jobs_where(QueueItem.select(), now) + .where(QueueItem.queue_name ** name_match_query)) @staticmethod - def _available_jobs_where(query, now, name_match_query): - return query.where(QueueItem.queue_name ** name_match_query, - QueueItem.available_after <= now, + def _available_jobs_where(query, now): + return query.where(QueueItem.available_after <= now, ((QueueItem.available == True) | (QueueItem.processing_expires <= now)), QueueItem.retries_remaining > 0) @@ -176,7 +177,7 @@ class WorkQueue(object): processing_expires=now + timedelta(seconds=processing_time), retries_remaining=QueueItem.retries_remaining-1) .where(QueueItem.id == db_item.id)) - changed_query = self._available_jobs_where(set_unavailable_query, now, name_match_query) + changed_query = self._available_jobs_where(set_unavailable_query, now) changed = changed_query.execute() if changed == 1: item = AttrDict({