From ec011547b8ed5517af1572d4c491e2975280e41d Mon Sep 17 00:00:00 2001 From: BHM-Bob <2262029386@qq.com> Date: Fri, 7 Feb 2025 09:23:05 +0800 Subject: [PATCH] fix-bug: mbapy/web_utils/task.py: TaskPool: _run_process_loop: sleep sleep_while_empty for empty queue handling to avoid busy waiting - Introduce sleep_while_empty parameter to handle empty queue scenario - Add sleep logic when thread result queue is empty to prevent busy waiting --- mbapy/web_utils/task.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mbapy/web_utils/task.py b/mbapy/web_utils/task.py index 4c91714..5003fab 100644 --- a/mbapy/web_utils/task.py +++ b/mbapy/web_utils/task.py @@ -269,6 +269,7 @@ def __init__(self, mode: str = 'async', n_worker: int = None, self.MODE = mode self.N_WORKER = n_worker self.IS_STARTED = False + self.sleep_while_empty = sleep_while_empty self._async_loop: asyncio.AbstractEventLoop = None self._thread_task_queue: Queue = Queue() self._thread_result_queue: Queue = Queue() @@ -317,6 +318,8 @@ def _run_process_loop(self): except Exception as e: self._thread_result_queue.put((task_name, e, TaskStatus.NOT_SUCCEEDED)) del tasks_cache[task_name] + time.sleep(self.sleep_while_empty) + time.sleep(self.sleep_while_empty) pool.close() def _run_isolated_process_loop(self):