Inicio → Ayuda
socket hang up en mitad de una respuesta en streaming
La conexión TCP se cerró antes de que terminara el stream. Nada en el contenido te dice quién la cerró, así que la distinción que necesitas es si llegó algún finish_reason: si no llegó, trata la respuesta como incompleta y no la guardes en caché.
Lo que ves
Error: socket hang upECONNRESET / read ECONNRESETaiohttp.ClientPayloadError: Response payload is not completedThe text stops mid-sentence with no finish_reason
Por qué ocurre
Los streams largos atraviesan más infraestructura que las peticiones cortas: tu red, cualquier proxy, el borde del proveedor y el host del modelo. Un timeout por inactividad en cualquier punto de esa cadena cierra la conexión, y el cliente lo notifica como un reset y no como un error HTTP, porque la respuesta HTTP ya había empezado con un 200.
Las redes móviles y la suspensión del portátil producen la misma firma. También un balanceador de carga con un timeout de inactividad más corto que el tiempo de reflexión del modelo, y por eso los modelos de razonamiento se topan con esto más que los rápidos.
Un stream que termina con un finish_reason correcto y después da error es otra cosa: la respuesta está completa y solo falló el cierre. Esa sí se puede usar con seguridad.
Cómo solucionarlo
- Usa finish_reason como señal de finalizaciónNo trates «el stream terminó» como un éxito. Marca una respuesta como completa solo cuando llegó un finish_reason; si no, reintenta o muéstrala como truncada.
- Reintenta la petición, no el streamEn una respuesta en streaming no hay punto de reanudación. Reintenta desde el principio, idealmente con un max_tokens más bajo para que el siguiente intento termine antes.
- Sube a la vez los timeouts del cliente y del proxySubir solo el timeout del cliente no sirve si un proxy delante cierra antes. Ambos deben superar la respuesta más lenta que esperas.
Un stream que muere a mitad se cobra igualmente por los tokens que se generaron: el trabajo se hizo. Tu registro de uso de APICLAN muestra exactamente cuántos, y así distingues una respuesta a medio terminar de una que nunca empezó.
Relacionado
Revisado por última vez el 2026-10-01. Escrito a partir de problemas diagnosticados en una pasarela
compatible con OpenAI en producción, no recopilado de otras webs.