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
This commit is contained in:
Cédric Krier
2022-12-08 13:34:01 +01:00
parent a058316e41
commit 2755687c07
+3 -3
View File
@@ -64,18 +64,18 @@ def work(options):
queues = [Queue(name, mpool) for name in options.database_names] queues = [Queue(name, mpool) for name in options.database_names]
tasks = TaskList() tasks = TaskList()
timeout = options.timeout
selector = selectors.DefaultSelector() selector = selectors.DefaultSelector()
for queue in queues: for queue in queues:
selector.register(queue.connection, selectors.EVENT_READ) selector.register(queue.connection, selectors.EVENT_READ)
try: try:
while True: while True:
timeout = options.timeout
while len(tasks.filter()) >= processes: while len(tasks.filter()) >= processes:
time.sleep(0.1) time.sleep(0.1)
for queue in queues: for queue in queues:
task_id, next_ = queue.pull(options.name) task_id, next_ = queue.pull(options.name)
timeout = min( if next_ is not None:
next_ or options.timeout, timeout, options.timeout) timeout = min(next_, timeout)
if task_id: if task_id:
tasks.append(queue.run(task_id)) tasks.append(queue.run(task_id))
break break