uWSGI 中止响应,失去与 nginx 的连接

uWSGI 中止响应,失去与 nginx 的连接

我正在运行一个用 Python 编写的小型 Web 应用程序,它在 uWSGI 中运行并通过 nginx 提供服务。有一个组件会生成 ZIP 文件供下载,这些文件有时可能非常大(几 GB)。经常发生 nginx 和 uWSGI 之间的连接中断,请求被中止;nginx 会在浏览器超时时忽略截断的响应,因为它保持连接打开,期望收到更多响应数据。该应用程序会生成正确的 Content-Length 标头。

从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 [...] !!!

我已经在 uWSGI 配置中设置了和,socket-timeout但无济于事。nginx conf 包含和socket-send-timeoutsocket-write-timeout180uwsgi_read_timeout 180s;uwsgi_buffering off;

这种效果大多数情况下是可重现的,因为它大多数时候都会发生,尤其是在响应量很大的情况下,但偏移量从不会相同。反复重复请求最终可能会完成。

答案1

事实证明,问题既不是我的应用程序也不是 nginx,而是两者前面的数据包过滤器有故障。

相关内容