Merge branch 'ldapper'
Conflicts: Dockerfile app.py data/database.py endpoints/index.py test/data/test.db
This commit is contained in:
commit
f6726bd0a4
25 changed files with 1157 additions and 94 deletions
|
@ -1,19 +1,17 @@
|
|||
from datetime import datetime, timedelta
|
||||
|
||||
from data.database import QueueItem, db
|
||||
from app import app
|
||||
|
||||
|
||||
transaction_factory = app.config['DB_TRANSACTION_FACTORY']
|
||||
|
||||
|
||||
MINIMUM_EXTENSION = timedelta(seconds=20)
|
||||
|
||||
|
||||
class WorkQueue(object):
|
||||
def __init__(self, queue_name, canonical_name_match_list=None, reporter=None):
|
||||
def __init__(self, queue_name, transaction_factory,
|
||||
canonical_name_match_list=None, reporter=None):
|
||||
self._queue_name = queue_name
|
||||
self._reporter = reporter
|
||||
self._transaction_factory = transaction_factory
|
||||
|
||||
if canonical_name_match_list is None:
|
||||
self._canonical_name_match_list = []
|
||||
|
@ -55,7 +53,7 @@ class WorkQueue(object):
|
|||
self._reporter(running, total_jobs)
|
||||
|
||||
def update_metrics(self):
|
||||
with transaction_factory(db):
|
||||
with self._transaction_factory(db):
|
||||
self._report_queue_metrics()
|
||||
|
||||
def put(self, canonical_name_list, message, available_after=0, retries_remaining=5):
|
||||
|
@ -74,7 +72,7 @@ class WorkQueue(object):
|
|||
available_date = datetime.now() + timedelta(seconds=available_after)
|
||||
params['available_after'] = available_date
|
||||
|
||||
with transaction_factory(db):
|
||||
with self._transaction_factory(db):
|
||||
QueueItem.create(**params)
|
||||
self._report_queue_metrics()
|
||||
|
||||
|
@ -87,7 +85,7 @@ class WorkQueue(object):
|
|||
|
||||
name_match_query = self._name_match_query()
|
||||
|
||||
with transaction_factory(db):
|
||||
with self._transaction_factory(db):
|
||||
running = self._running_jobs(now, name_match_query)
|
||||
|
||||
avail = QueueItem.select().where(QueueItem.queue_name ** name_match_query,
|
||||
|
@ -113,12 +111,12 @@ class WorkQueue(object):
|
|||
return item
|
||||
|
||||
def complete(self, completed_item):
|
||||
with transaction_factory(db):
|
||||
with self._transaction_factory(db):
|
||||
completed_item.delete_instance()
|
||||
self._report_queue_metrics()
|
||||
|
||||
def incomplete(self, incomplete_item, retry_after=300, restore_retry=False):
|
||||
with transaction_factory(db):
|
||||
with self._transaction_factory(db):
|
||||
retry_date = datetime.now() + timedelta(seconds=retry_after)
|
||||
incomplete_item.available_after = retry_date
|
||||
incomplete_item.available = True
|
||||
|
|
Reference in a new issue