fix: 优化退出流程并添加超时保护

- 添加 is_exiting 标志防止退出流程被中断
- 工具调用添加 30 秒超时保护,避免流程卡死
- TTS 相关操作添加超时保护
- 优化 OpenAI 客户端超时配置
This commit is contained in:
lgy1027
2026-03-10 11:45:38 +08:00
parent f691e9f0c9
commit c2b95ca896
8 changed files with 49 additions and 12 deletions
@@ -357,7 +357,7 @@ class TTSProviderBase(ABC):
sendAudioMessage(self.conn, sentence_type, audio_datas, text),
self.conn.loop,
)
future.result()
future.result(timeout=15)
# 记录输出和报告
if self.conn.max_output_size > 0 and text:
@@ -149,6 +149,7 @@ class TTSProvider(TTSProviderBase):
self.cluster = config.get("cluster")
self.resource_id = config.get("resource_id")
self.activate_session = False
self.timeout = 30
if config.get("private_voice"):
self.voice = config.get("private_voice")
else:
@@ -307,7 +308,7 @@ class TTSProvider(TTSProviderBase):
self.start_session(self.conn.sentence_id),
loop=self.conn.loop,
)
future.result()
future.result(self.timeout)
self.before_stop_play_files.clear()
logger.bind(tag=TAG).debug("TTS会话启动成功")
except Exception as e:
@@ -324,7 +325,7 @@ class TTSProvider(TTSProviderBase):
self.text_to_speak(message.content_detail, None),
loop=self.conn.loop,
)
future.result()
future.result(self.timeout)
logger.bind(tag=TAG).debug("TTS文本发送成功")
except Exception as e:
logger.bind(tag=TAG).error(f"发送TTS文本失败: {str(e)}")
@@ -344,7 +345,7 @@ class TTSProvider(TTSProviderBase):
self.finish_session(self.conn.sentence_id),
loop=self.conn.loop,
)
future.result()
future.result(self.timeout)
except Exception as e:
logger.bind(tag=TAG).error(f"结束TTS会话失败: {str(e)}")
continue