diff --git a/endpoints/notificationmethod.py b/endpoints/notificationmethod.py index a7660303a..526a25199 100644 --- a/endpoints/notificationmethod.py +++ b/endpoints/notificationmethod.py @@ -6,7 +6,7 @@ import re from flask.ext.mail import Message from app import mail, app from data import model -from workers.worker import JobException +from workers.queueworker import JobException logger = logging.getLogger(__name__) diff --git a/workers/repositoryactioncounter.py b/workers/repositoryactioncounter.py index ec7ed105a..fdc4f88e1 100644 --- a/workers/repositoryactioncounter.py +++ b/workers/repositoryactioncounter.py @@ -10,6 +10,36 @@ POLL_PERIOD_SECONDS = 10 logger = logging.getLogger(__name__) +def count_repository_actions(): + with UseThenDisconnect(app.config): + try: + # Get a random repository to count. + today = date.today() + yesterday = today - timedelta(days=1) + has_yesterday_actions = (RepositoryActionCount.select(RepositoryActionCount.repository) + .where(RepositoryActionCount.date == yesterday)) + + to_count = (Repository.select() + .where(~(Repository.id << (has_yesterday_actions))) + .order_by(db_random_func()).get()) + + logger.debug('Counting: %s', to_count.id) + + actions = (LogEntry.select() + .where(LogEntry.repository == to_count, + LogEntry.datetime >= yesterday, + LogEntry.datetime < today) + .count()) + + # Create the row. + try: + RepositoryActionCount.create(repository=to_count, date=yesterday, count=actions) + except: + logger.exception('Exception when writing count') + except Repository.DoesNotExist: + logger.debug('No further repositories to count') + + class RepositoryActionCountWorker(Worker): def __init__(self): super(RepositoryActionCountWorker, self).__init__() @@ -17,34 +47,7 @@ class RepositoryActionCountWorker(Worker): def _count_repository_actions(self): """ Counts actions for a random repository for the previous day. """ - - with UseThenDisconnect(app.config): - try: - # Get a random repository to count. - today = date.today() - yesterday = today - timedelta(days=1) - has_yesterday_actions = (RepositoryActionCount.select(RepositoryActionCount.repository) - .where(RepositoryActionCount.date == yesterday)) - - to_count = (Repository.select() - .where(~(Repository.id << (has_yesterday_actions))) - .order_by(db_random_func()).get()) - - logger.debug('Counting: %s', to_count.id) - - actions = (LogEntry.select() - .where(LogEntry.repository == to_count, - LogEntry.datetime >= yesterday, - LogEntry.datetime < today) - .count()) - - # Create the row. - try: - RepositoryActionCount.create(repository=to_count, date=yesterday, count=actions) - except: - logger.exception('Exception when writing count') - except Repository.DoesNotExist: - logger.debug('No further repositories to count') + count_repository_actions() if __name__ == "__main__": worker = RepositoryActionCountWorker()