diff --git a/ai/cmd/ai-app/main.go b/ai/cmd/ai-app/main.go index c039e182..94e3a9cc 100644 --- a/ai/cmd/ai-app/main.go +++ b/ai/cmd/ai-app/main.go @@ -202,6 +202,9 @@ func build(pool *pgxpool.Pool, cfg config, prov provider.Provider, workerID stri return wiring{mux: mux, queue: q, worker: worker, quotaStore: quotaStore} } +// Muss ueber dem Provider-Timeout (120s) liegen, sonst kappt der Server langsame Inferenz-Antworten. +const serverWriteTimeout = 130 * time.Second + func main() { cfg, err := loadConfig(os.Getenv) if err != nil { @@ -226,7 +229,7 @@ func main() { Handler: w.mux, ReadHeaderTimeout: 5 * time.Second, ReadTimeout: 15 * time.Second, - WriteTimeout: 15 * time.Second, + WriteTimeout: serverWriteTimeout, IdleTimeout: 60 * time.Second, } diff --git a/ai/cmd/ai-app/main_test.go b/ai/cmd/ai-app/main_test.go index 84b0dd0f..3d80efa4 100644 --- a/ai/cmd/ai-app/main_test.go +++ b/ai/cmd/ai-app/main_test.go @@ -87,6 +87,12 @@ func TestLoadConfig_Defaults(t *testing.T) { } } +func TestServerWriteTimeoutCoversProviderTimeout(t *testing.T) { + if serverWriteTimeout <= 120*time.Second { + t.Fatalf("serverWriteTimeout = %v, muss ueber dem Provider-Timeout von 120s liegen", serverWriteTimeout) + } +} + func newTestPool(t *testing.T) *pgxpool.Pool { t.Helper() dsn := os.Getenv("TEST_TENANT_DSN")