fix(tts server): 优化TTS服务配置错误处理逻辑

1. 将初始化TTS配置的致命错误改为警告,服务继续运行
2. 在TTS请求和健康检查中加入配置错误判断,返回对应错误信息
3. 在健康检查详情中添加配置错误状态和提示信息
This commit is contained in:
sun
2026-05-17 18:51:43 +08:00
parent 3304707abe
commit 92c6b8b701
+28 -3
View File
@@ -94,6 +94,7 @@ type Stats struct {
var (
VALID_API_KEYS []string
ttsConfig ByteDanceTTSConfig
ttsConfigErr error
globalHTTPClient *http.Client
apiStats *Stats
rateLimiter *RateLimiter
@@ -466,6 +467,19 @@ func openaiTTSHandler(w http.ResponseWriter, r *http.Request) {
return
}
if ttsConfigErr != nil {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusServiceUnavailable)
json.NewEncoder(w).Encode(map[string]interface{}{
"error": map[string]interface{}{
"message": fmt.Sprintf("TTS service configuration error: %v. Please check environment variables and restart the service.", ttsConfigErr),
"type": "configuration_error",
"code": "service_unavailable",
},
})
return
}
clientIP := getClientIP(r)
if !rateLimiter.Allow(clientIP) {
w.Header().Set("Content-Type", "application/json")
@@ -566,7 +580,12 @@ func getMemoryInfo() map[string]interface{} {
func healthHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
if ttsConfigErr != nil {
w.WriteHeader(http.StatusServiceUnavailable)
} else {
w.WriteHeader(http.StatusOK)
}
apiStats.mutex.RLock()
totalRequests := apiStats.totalRequests
@@ -625,6 +644,8 @@ func healthHandler(w http.ResponseWriter, r *http.Request) {
},
"config_status": map[string]interface{}{
"all_required_vars_set": allEnvVarsSet,
"config_error": ttsConfigErr != nil,
"config_error_message": fmt.Sprintf("%v", ttsConfigErr),
},
}
@@ -666,8 +687,12 @@ func main() {
initAPIKeys()
if err := initTTSConfig(); err != nil {
log.Fatalf("配置初始化失败: %v", err)
ttsConfigErr = initTTSConfig()
if ttsConfigErr != nil {
log.Printf("警告: 配置初始化失败: %v", ttsConfigErr)
log.Printf("服务将继续运行,但TTS功能不可用,请检查环境变量配置")
} else {
log.Printf("配置初始化成功")
}
router := mux.NewRouter()