#31865 feat(proxy): add per-deployment keepalive_seconds SSE heartbeat to prevent load-balancer timeout on long streams
## Problem
Long-running LLM streaming responses are silently dropped by intermediate load-balancer and reverse-proxy infrastructure. AWS ALB, GCP GCLB, and Nginx all default to 60-second idle-connection timeouts on SSE connections. When no bytes flow across a connection within that window, the load balancer tears it down without warning. The client receives a truncated or empty response with no HTTP error code; from the client's perspective the request simply hangs and then fails.
The root problem is in `async_data_generator` at `litellm/proxy/proxy_server.py`. The loop `async for chunk in stream_iterator:` yields data only when the upstream LLM emits a chunk. When the model is computing, particularly during long chain-of-thought reasoning passes, no bytes flow through the proxy for potentially minutes at a time. There is no mechanism to inject SSE heartbeat frames during idle intervals.
## Reproduction
Start the LiteLLM proxy and route requests through any load balancer with a 60-second idle SSE timeout (AWS ALB default, GCP GCLB default, or Nginx `proxy_read_timeout 60s`). Issue a streaming request to a slow model. After approximately 60 seconds without output from the LLM, t…