Merge branch 'ldapper'

Conflicts:
	Dockerfile
	app.py
	data/database.py
	endpoints/index.py
	test/data/test.db
This commit is contained in:
Jake Moshenko 2014-05-22 12:13:41 -04:00
commit f6726bd0a4
25 changed files with 1157 additions and 94 deletions

View file

@ -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