From 90ce72fa15cc422523cb1a4af4086e229e33320d Mon Sep 17 00:00:00 2001 From: yml2213 Date: Tue, 1 Sep 2026 12:25:03 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9A=94=E7=A6=BB=E8=99=8E=E7=89=99=E5=AE=9D?= =?UTF-8?q?=E5=85=B8=E6=89=B9=E9=87=8F=E4=BB=BB=E5=8A=A1WSS=E4=BC=9A?= =?UTF-8?q?=E8=AF=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/backend/services/huya_runner_core.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/web/backend/services/huya_runner_core.py b/web/backend/services/huya_runner_core.py index 86f072d..57ed5ed 100644 --- a/web/backend/services/huya_runner_core.py +++ b/web/backend/services/huya_runner_core.py @@ -46,7 +46,7 @@ class HuyaBatchRunnerCore: self._stop = threading.Event() self._counter_lock = threading.Lock() self._started = 0 - self._wss_sessions: list[Any] = [] + self._wss_sessions = threading.local() def stop(self): self._stop.set() @@ -61,9 +61,16 @@ class HuyaBatchRunnerCore: kind=kind, logger=lambda message: self._push_log("info", f"[{uid}] {message}"), ) - self._wss_sessions.append(session) + self._session_bucket().append(session) return session + def _session_bucket(self) -> list[Any]: + bucket = getattr(self._wss_sessions, "items", None) + if bucket is None: + bucket = [] + self._wss_sessions.items = bucket + return bucket + def _activity_client(self, uid: int, cookie: str): """活动任务优先使用最新活动 WSS,建连失败才回退 HTTP。""" from core.huya.http_client import HuyaHttpClient @@ -79,12 +86,13 @@ class HuyaBatchRunnerCore: return HuyaHttpClient(logger=lambda msg: self._push_log("info", f"[{uid}] {msg}")) def _close_wss_sessions(self): - for session in reversed(self._wss_sessions): + bucket = self._session_bucket() + for session in reversed(bucket): try: session.close() except Exception: # noqa: BLE001 - cleanup must not mask task status logger.debug("[huya] WSS 会话清理异常") - self._wss_sessions.clear() + bucket.clear() def _push_log(self, level: str, message: str): if level == "result":