From 10294e9eb9826b9cfed3beba3f3f2224ebbbf2de Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Sat, 19 Sep 2026 14:50:26 +0800 Subject: [PATCH] =?UTF-8?q?fix(gpu):=20TaskHeartbeat=20=E7=9A=84=20=5Fstop?= =?UTF-8?q?=20=E5=B1=9E=E6=80=A7=E6=94=B9=E5=90=8D=20=5Fstop=5Fevent?= =?UTF-8?q?=EF=BC=8C=E9=81=BF=E5=85=8D=E8=A6=86=E7=9B=96=20Thread.=5Fstop?= =?UTF-8?q?=20=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CI 单测报错 'Event' object is not callable:threading.Thread 内部存在 _stop() 方法(join/GC 时调用),子类用 self._stop = Event() 覆盖了它, 线程回收时 TypeError。本地因时序差异未复现。 --- deploy/gpu_worker/gpu_worker.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deploy/gpu_worker/gpu_worker.py b/deploy/gpu_worker/gpu_worker.py index 8745597b7..72bb73aed 100644 --- a/deploy/gpu_worker/gpu_worker.py +++ b/deploy/gpu_worker/gpu_worker.py @@ -315,20 +315,20 @@ class TaskHeartbeat(threading.Thread): super().__init__(daemon=True, name=f"hb-{task_id[:8]}") self.task_id = task_id self.interval = max(5.0, interval) - self._stop = threading.Event() + self._stop_event = threading.Event() def run(self) -> None: # 先立即发一次,再按间隔循环(首次心跳失败不影响主流程) - while not self._stop.is_set(): + while not self._stop_event.is_set(): try: if _register(self.task_id): logger.debug("任务 %s 心跳已发送", self.task_id) except Exception as exc: # noqa: BLE001 logger.warning("任务 %s 心跳异常(忽略): %s", self.task_id, exc) - self._stop.wait(self.interval) + self._stop_event.wait(self.interval) def stop(self) -> None: - self._stop.set() + self._stop_event.set() def _handle_task(task: dict) -> None: