fix: raise provider HTTP timeouts from 30s to 10min
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled

30-second resty client timeout was killing long streaming responses
mid-generation. Models with large output windows (e.g. deepseek-v4-pro
at 384K max_tokens) routinely exceed 30s. Raised all providers to
10 minutes (Ollama already at 15min, unchanged). Circuit breaker
recovery timeout raised from 30s to 5min.
This commit is contained in:
2026-04-30 10:17:45 -04:00
parent 4aa17b4fd2
commit eb67287b56
6 changed files with 6 additions and 6 deletions
+1 -1
View File
@@ -17,7 +17,7 @@ func NewCircuitBreakerProvider(p Provider) Provider {
name := p.Name() name := p.Name()
var maxRequests uint32 = 5 var maxRequests uint32 = 5
var interval = 60 * time.Second var interval = 60 * time.Second
var timeout = 30 * time.Second var timeout = 5 * time.Minute
settings := gobreaker.Settings{ settings := gobreaker.Settings{
Name: name, Name: name,
+1 -1
View File
@@ -22,7 +22,7 @@ type DeepSeekProvider struct {
func NewDeepSeekProvider(cfg config.DeepSeekConfig, apiKey string) *DeepSeekProvider { func NewDeepSeekProvider(cfg config.DeepSeekConfig, apiKey string) *DeepSeekProvider {
return &DeepSeekProvider{ return &DeepSeekProvider{
client: resty.New().SetTimeout(30 * time.Second), client: resty.New().SetTimeout(10 * time.Minute),
config: cfg, config: cfg,
apiKey: apiKey, apiKey: apiKey,
} }
+1 -1
View File
@@ -20,7 +20,7 @@ type GeminiProvider struct {
func NewGeminiProvider(cfg config.GeminiConfig, apiKey string) *GeminiProvider { func NewGeminiProvider(cfg config.GeminiConfig, apiKey string) *GeminiProvider {
return &GeminiProvider{ return &GeminiProvider{
client: resty.New().SetTimeout(30 * time.Second), client: resty.New().SetTimeout(10 * time.Minute),
config: cfg, config: cfg,
apiKey: apiKey, apiKey: apiKey,
} }
+1 -1
View File
@@ -19,7 +19,7 @@ type GrokProvider struct {
func NewGrokProvider(cfg config.GrokConfig, apiKey string) *GrokProvider { func NewGrokProvider(cfg config.GrokConfig, apiKey string) *GrokProvider {
return &GrokProvider{ return &GrokProvider{
client: resty.New().SetTimeout(30 * time.Second), client: resty.New().SetTimeout(10 * time.Minute),
config: cfg, config: cfg,
apiKey: apiKey, apiKey: apiKey,
} }
+1 -1
View File
@@ -20,7 +20,7 @@ type MoonshotProvider struct {
func NewMoonshotProvider(cfg config.MoonshotConfig, apiKey string) *MoonshotProvider { func NewMoonshotProvider(cfg config.MoonshotConfig, apiKey string) *MoonshotProvider {
return &MoonshotProvider{ return &MoonshotProvider{
client: resty.New().SetTimeout(30 * time.Second), client: resty.New().SetTimeout(10 * time.Minute),
config: cfg, config: cfg,
apiKey: strings.TrimSpace(apiKey), apiKey: strings.TrimSpace(apiKey),
} }
+1 -1
View File
@@ -20,7 +20,7 @@ type OpenAIProvider struct {
func NewOpenAIProvider(cfg config.OpenAIConfig, apiKey string) *OpenAIProvider { func NewOpenAIProvider(cfg config.OpenAIConfig, apiKey string) *OpenAIProvider {
return &OpenAIProvider{ return &OpenAIProvider{
client: resty.New().SetTimeout(30 * time.Second), client: resty.New().SetTimeout(10 * time.Minute),
config: cfg, config: cfg,
apiKey: apiKey, apiKey: apiKey,
} }