@@ -30,8 +30,8 @@ type Constants struct {
3030var DefaultConstants = Constants {
3131 MinPort : 1 ,
3232 MaxPort : 65535 ,
33- MinTimeout : 1000 ,
34- DefaultTimeout : 30000 ,
33+ MinTimeout : 1 ,
34+ DefaultTimeout : 30 ,
3535 DefaultMaxSockets : 50 ,
3636 DefaultMaxFreeSockets : 10 ,
3737}
@@ -62,8 +62,12 @@ func NewManager() (types.ConfigManager, error) {
6262
6363 config := & Config {
6464 Server : types.ServerConfig {
65- Port : parseInteger (os .Getenv ("PORT" ), 3000 ),
66- Host : getEnvOrDefault ("HOST" , "0.0.0.0" ),
65+ Port : parseInteger (os .Getenv ("PORT" ), 3000 ),
66+ Host : getEnvOrDefault ("HOST" , "0.0.0.0" ),
67+ ReadTimeout : parseInteger (os .Getenv ("SERVER_READ_TIMEOUT" ), 120 ),
68+ WriteTimeout : parseInteger (os .Getenv ("SERVER_WRITE_TIMEOUT" ), 1800 ),
69+ IdleTimeout : parseInteger (os .Getenv ("SERVER_IDLE_TIMEOUT" ), 120 ),
70+ GracefulShutdownTimeout : parseInteger (os .Getenv ("SERVER_GRACEFUL_SHUTDOWN_TIMEOUT" ), 60 ),
6771 },
6872 Keys : types.KeysConfig {
6973 FilePath : getEnvOrDefault ("KEYS_FILE" , "keys.txt" ),
@@ -72,8 +76,10 @@ func NewManager() (types.ConfigManager, error) {
7276 MaxRetries : parseInteger (os .Getenv ("MAX_RETRIES" ), 3 ),
7377 },
7478 OpenAI : types.OpenAIConfig {
75- BaseURLs : parseArray (os .Getenv ("OPENAI_BASE_URL" ), []string {"https://api.openai.com" }),
76- Timeout : parseInteger (os .Getenv ("REQUEST_TIMEOUT" ), DefaultConstants .DefaultTimeout ),
79+ BaseURLs : parseArray (os .Getenv ("OPENAI_BASE_URL" ), []string {"https://api.openai.com" }),
80+ RequestTimeout : parseInteger (os .Getenv ("REQUEST_TIMEOUT" ), DefaultConstants .DefaultTimeout ),
81+ ResponseTimeout : parseInteger (os .Getenv ("RESPONSE_TIMEOUT" ), 30 ),
82+ IdleConnTimeout : parseInteger (os .Getenv ("IDLE_CONN_TIMEOUT" ), 120 ),
7783 },
7884 Auth : types.AuthConfig {
7985 Key : os .Getenv ("AUTH_KEY" ),
@@ -88,7 +94,6 @@ func NewManager() (types.ConfigManager, error) {
8894 },
8995 Performance : types.PerformanceConfig {
9096 MaxConcurrentRequests : parseInteger (os .Getenv ("MAX_CONCURRENT_REQUESTS" ), 100 ),
91- RequestTimeout : parseInteger (os .Getenv ("REQUEST_TIMEOUT" ), DefaultConstants .DefaultTimeout ),
9297 EnableGzip : parseBoolean (os .Getenv ("ENABLE_GZIP" ), true ),
9398 },
9499 Log : types.LogConfig {
@@ -173,8 +178,8 @@ func (m *Manager) Validate() error {
173178 }
174179
175180 // Validate timeout
176- if m .config .OpenAI .Timeout < DefaultConstants .MinTimeout {
177- validationErrors = append (validationErrors , fmt .Sprintf ("request timeout cannot be less than %dms " , DefaultConstants .MinTimeout ))
181+ if m .config .OpenAI .RequestTimeout < DefaultConstants .MinTimeout {
182+ validationErrors = append (validationErrors , fmt .Sprintf ("request timeout cannot be less than %ds " , DefaultConstants .MinTimeout ))
178183 }
179184
180185 // Validate upstream URL format
@@ -212,7 +217,9 @@ func (m *Manager) DisplayConfig() {
212217 logrus .Infof (" Blacklist threshold: %d errors" , m .config .Keys .BlacklistThreshold )
213218 logrus .Infof (" Max retries: %d" , m .config .Keys .MaxRetries )
214219 logrus .Infof (" Upstream URLs: %s" , strings .Join (m .config .OpenAI .BaseURLs , ", " ))
215- logrus .Infof (" Request timeout: %dms" , m .config .OpenAI .Timeout )
220+ logrus .Infof (" Request timeout: %ds" , m .config .OpenAI .RequestTimeout )
221+ logrus .Infof (" Response timeout: %ds" , m .config .OpenAI .ResponseTimeout )
222+ logrus .Infof (" Idle connection timeout: %ds" , m .config .OpenAI .IdleConnTimeout )
216223
217224 authStatus := "disabled"
218225 if m .config .Auth .Enabled {
0 commit comments