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":