From 17893931514bd2b45d55d42f7b6bfb6ba08d1fce Mon Sep 17 00:00:00 2001 From: Zhalslar Date: Thu, 19 Jun 2025 00:52:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BE=9Binitialize=E5=92=8Cterminate?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E5=AF=B9=E6=8E=A5=E4=B8=8A=E6=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../provider/sources/gsv_selfhosted_source.py | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/astrbot/core/provider/sources/gsv_selfhosted_source.py b/astrbot/core/provider/sources/gsv_selfhosted_source.py index ff0083a1a..d6379e244 100644 --- a/astrbot/core/provider/sources/gsv_selfhosted_source.py +++ b/astrbot/core/provider/sources/gsv_selfhosted_source.py @@ -36,19 +36,20 @@ class ProviderGSVTTS(TTSProvider): for key, value in provider_config.get("gsv_default_parms", {}).items() } self.timeout = provider_config.get("timeout", 60) + self._session: aiohttp.ClientSession | None = None + + + async def initialize(self): + """异步初始化:在 ProviderManager 中被调用""" self._session = aiohttp.ClientSession( timeout=aiohttp.ClientTimeout(total=self.timeout) ) - asyncio.create_task(self._async_init()).add_done_callback( - self._handle_init_exception - ) - - async def _async_init(self): - await self._set_model_weights() - - def _handle_init_exception(self, task: asyncio.Task): - if task.exception(): - logger.error(f"[GSV TTS] 初始化失败:{task.exception()}") + try: + await self._set_model_weights() + logger.info("[GSV TTS] 初始化完成") + except Exception as e: + logger.error(f"[GSV TTS] 初始化失败:{e}") + raise def get_session(self) -> aiohttp.ClientSession: if not self._session or self._session.closed: @@ -138,10 +139,10 @@ class ProviderGSVTTS(TTSProvider): # TODO: 在此处添加情绪分析,例如 params["emotion"] = detect_emotion(text) return params - async def shutdown(self): + async def terminate(self): + """终止释放资源:在 ProviderManager 中被调用""" if self._session and not self._session.closed: await self._session.close() + logger.info("[GSV TTS] Session 已关闭") + - def __del__(self): - if hasattr(self, "_session") and self._session and not self._session.closed: - logger.warning("[GSV TTS] ProviderGSVTTS 已被销毁但 session 未关闭,请确保调用 shutdown()")