From 8630cc1021bea0edf6afa931597388c3128cd2a2 Mon Sep 17 00:00:00 2001 From: allegroai <> Date: Thu, 20 Feb 2020 18:26:56 +0200 Subject: [PATCH] Fix queue update time to update when task is taken from queue, not when queried --- server/bll/queue/queue_bll.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/server/bll/queue/queue_bll.py b/server/bll/queue/queue_bll.py index a602600..95f3b31 100644 --- a/server/bll/queue/queue_bll.py +++ b/server/bll/queue/queue_bll.py @@ -9,9 +9,12 @@ import es_factory from apierrors import errors from bll.queue.queue_metrics import QueueMetrics from bll.workers import WorkerBLL +from config import config from database.errors import translate_errors_context from database.model.queue import Queue, Entry +log = config.logger(__file__) + class QueueBLL(object): def __init__(self, worker_bll: WorkerBLL = None, es: Elasticsearch = None): @@ -189,9 +192,7 @@ class QueueBLL(object): """ with translate_errors_context(): query = dict(id=queue_id, company=company_id) - queue = Queue.objects(**query).modify( - pop__entries=-1, last_update=datetime.utcnow(), upsert=False - ) + queue = Queue.objects(**query).modify(pop__entries=-1, upsert=False) if not queue: raise errors.bad_request.InvalidQueueId(**query) @@ -200,6 +201,11 @@ class QueueBLL(object): if not queue.entries: return + try: + Queue.objects(**query).update(last_update=datetime.utcnow()) + except Exception: + log.exception("Error while updating Queue.last_update") + return queue.entries[0] def remove_task(self, company_id: str, queue_id: str, task_id: str) -> int: