From 2755687c0734b01f17a24fbcc01acb0998b8252d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 8 Dec 2022 13:34:01 +0100 Subject: [PATCH] Reset timeout loop of worker on each iteration If there was a next task planned very soon, this should not become the default timeout for future loop. issue11913 review415971003 --- trytond/worker.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/trytond/worker.py b/trytond/worker.py index b0d751fbf3..2a67425610 100644 --- a/trytond/worker.py +++ b/trytond/worker.py @@ -64,18 +64,18 @@ def work(options): queues = [Queue(name, mpool) for name in options.database_names] tasks = TaskList() - timeout = options.timeout selector = selectors.DefaultSelector() for queue in queues: selector.register(queue.connection, selectors.EVENT_READ) try: while True: + timeout = options.timeout while len(tasks.filter()) >= processes: time.sleep(0.1) for queue in queues: task_id, next_ = queue.pull(options.name) - timeout = min( - next_ or options.timeout, timeout, options.timeout) + if next_ is not None: + timeout = min(next_, timeout) if task_id: tasks.append(queue.run(task_id)) break