隔离虎牙宝典批量任务WSS会话
This commit is contained in:
@@ -46,7 +46,7 @@ class HuyaBatchRunnerCore:
|
|||||||
self._stop = threading.Event()
|
self._stop = threading.Event()
|
||||||
self._counter_lock = threading.Lock()
|
self._counter_lock = threading.Lock()
|
||||||
self._started = 0
|
self._started = 0
|
||||||
self._wss_sessions: list[Any] = []
|
self._wss_sessions = threading.local()
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
self._stop.set()
|
self._stop.set()
|
||||||
@@ -61,9 +61,16 @@ class HuyaBatchRunnerCore:
|
|||||||
kind=kind,
|
kind=kind,
|
||||||
logger=lambda message: self._push_log("info", f"[{uid}] {message}"),
|
logger=lambda message: self._push_log("info", f"[{uid}] {message}"),
|
||||||
)
|
)
|
||||||
self._wss_sessions.append(session)
|
self._session_bucket().append(session)
|
||||||
return 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):
|
def _activity_client(self, uid: int, cookie: str):
|
||||||
"""活动任务优先使用最新活动 WSS,建连失败才回退 HTTP。"""
|
"""活动任务优先使用最新活动 WSS,建连失败才回退 HTTP。"""
|
||||||
from core.huya.http_client import HuyaHttpClient
|
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}"))
|
return HuyaHttpClient(logger=lambda msg: self._push_log("info", f"[{uid}] {msg}"))
|
||||||
|
|
||||||
def _close_wss_sessions(self):
|
def _close_wss_sessions(self):
|
||||||
for session in reversed(self._wss_sessions):
|
bucket = self._session_bucket()
|
||||||
|
for session in reversed(bucket):
|
||||||
try:
|
try:
|
||||||
session.close()
|
session.close()
|
||||||
except Exception: # noqa: BLE001 - cleanup must not mask task status
|
except Exception: # noqa: BLE001 - cleanup must not mask task status
|
||||||
logger.debug("[huya] WSS 会话清理异常")
|
logger.debug("[huya] WSS 会话清理异常")
|
||||||
self._wss_sessions.clear()
|
bucket.clear()
|
||||||
|
|
||||||
def _push_log(self, level: str, message: str):
|
def _push_log(self, level: str, message: str):
|
||||||
if level == "result":
|
if level == "result":
|
||||||
|
|||||||
Reference in New Issue
Block a user