uWSGI aborta las respuestas, pierde la conexión con nginx

uWSGI aborta las respuestas, pierde la conexión con nginx

Estoy ejecutando una pequeña aplicación web escrita en Python, que se ejecuta en uWSGI y se sirve a través de nginx. Hay un componente que genera archivos ZIP para descargar, que en ocasiones pueden ser bastante grandes (varios GB). A menudo sucede que la conexión entre nginx y uWSGI se interrumpe y la solicitud se cancela; nginx ignora la respuesta truncada mientras el navegador agota el tiempo de espera porque mantiene la conexión abierta, esperando más datos de respuesta. La aplicación genera un encabezado Content-Length adecuado.

Desde el registro de uWSGI:

uwsgi_response_write_body_do(): Broken pipe [core/writer.c line 429] during GET [...]
OSError: write error
SIGPIPE: writing to a closed pipe/socket/fd (probably the client disconnected) on request [...] !!!

Ya lo configuré socket-timeouty socket-send-timeouten la configuración socket-write-timeoutde 180uWSGI, sin éxito. La configuración de nginx incluye uwsgi_read_timeout 180s;yuwsgi_buffering off;

El efecto es mayoritariamente reproducible, ya que ocurre la mayor parte del tiempo, especialmente con respuestas grandes, pero nunca con el mismo desplazamiento. Repetir la solicitud una y otra vez podría eventualmente llevar a su finalización.

Respuesta1

Resultó que ni mi aplicación ni nginx eran el problema, sino un filtro de paquetes defectuoso delante de ambos.

información relacionada