Flask+Nginx部署时上游连接提前关闭问题求助
解决Nginx + uWSGI + Flask中长请求被提前断开的问题
我之前也碰到过一模一样的情况!你已经在Nginx里调了proxy_read_timeout这类超时参数,但问题依然存在,核心原因大概率是uWSGI本身的超时限制没跟上——毕竟你的SQL查询要跑1分钟,而uWSGI默认的超时阈值通常比这个短很多,它会主动断开超时的请求,导致Nginx报出那个错误。
下面是具体的解决步骤:
修改uWSGI的超时配置
找到你的uWSGI配置文件(通常是项目根目录下的xxx.ini,或者系统级的配置文件),添加或调整以下参数:# 允许请求最长运行120秒(比你的1分钟查询留足余量) harakiri-timeout = 120 # Socket连接超时时间匹配上面的设置 socket-timeout = 120 # 开启日志方便排查后续问题 disable-logging = false如果是用命令行直接启动uWSGI的,就把这些参数加进去:
uwsgi --socket /home/hleggio/myproject/myproject.sock --harakiri 120 --socket-timeout 120 --module myproject:app确认Flask端无额外超时设置
你用Flask测试服务器没问题,这个可能性不大,但可以快速检查下有没有给/order-history接口加过超时装饰器,或者全局设置了请求超时。重启服务让配置生效
修改完配置后,记得重启uWSGI和Nginx:sudo systemctl restart uwsgi sudo systemctl restart nginx
补充排查点
如果还是没解决,去看uWSGI的日志(一般在/var/log/uwsgi/或者你自定义的日志路径),里面会明确记录断开请求的原因——比如是不是内存不足导致进程被杀死,或者SQL查询本身有异常。
内容的提问来源于stack exchange,提问作者Harrison
相关产品推荐
相关产品推荐

