uwsgi + nginx +烧瓶:上游过早closures

uwsgi + nginx +烧瓶:上游过早closures,第1张

概述uwsgi + nginx +烧瓶上游过早closures

我在烧瓶上创build了一个端点,它从数据库查询(远程数据库)生成一个电子表格,然后在浏览器中下载。 烧瓶不会抛出任何错误。 Uwsgi不抱怨。

但是,当我检查Nginx的error.log,我看到很多

2014/12/10 05:06:24 [error] 14084#0:* 239436上游过早closures连接,同时从上游读取响应头,客户端:34.34.34.34,server:me.com,请求:“GET / download / export .csv http / 1.1“,上游:”uwsgi://0.0.0.0:5002“,主机:”me.com“,引用来源:” https://me.com/download/export.csv “

我部署uwsgi像

将Flask应用程序部署为windows服务

如何在ubuntu服务器上使用Supervisor / Nginx / Gunicorn部署Flask应用程序

使用Apache mod_wsgi进行httpstream式传输

Flask + gevent – SSE超时Nginx + uwsgi

我的Python打印在uWsgi下用Nginx部署在Flask的哪里?

uwsgi --socket 0.0.0.0:5002 --buffer-size=32768 --module server --callab app

我的Nginxconfiguration:

server { Listen 80; merge_slashes off; server_name me.com www.me.cpm; location / { try_files $uri @app; } location @app { include uwsgi_params; uwsgi_pass 0.0.0.0:5002; uwsgi_buffer_size 32k; uwsgi_buffers 8 32k; uwsgi_busy_buffers_size 32k; } } server { Listen 443; merge_slashes off; server_name me.com www.me.com; location / { try_files $uri @app; } location @app { include uwsgi_params; uwsgi_pass 0.0.0.0:5002; uwsgi_buffer_size 32k; uwsgi_buffers 8 32k; uwsgi_busy_buffers_size 32k; } }

这是一个Nginx或uwsgi问题,或两者?

如何在Nginx上托pipe的单个域下托pipe多个应用程序?

使用apache和mod_wsgi的Flask hello world仅在webroot中显示文件

如何处理烧瓶上的静态/媒体文件许可?

如何在uWsgi中正确加载Flask应用程序模块?

与Flask应用程序的uwsgi给“可找不到或导入错误”

将Nginx.conf更改为包含

sendfile on; clIEnt_max_body_size 20M; keepalive_timeout 0;

看完整的例子, 在亚马逊linux上自我回答uwsgi新贵

替换uwsgi_pass 0.0.0.0:5002; 用uwsgi_pass 127.0.0.1:5002; 或者更好的使用unix套接字。

看来这个错误信息背后有许多原因。 我知道你正在使用uwsgi_pass ,但是对于那些在使用proxy_pass时长请求的问题,在uWsgi上设置http-timeout可能会有帮助(这不是harakiri设置)。

我通过在uwsgi中传递socket-timeout = 65 (uwsgi.ini文件)或--socket-timeout=65 (uwsgi命令行)选项来解决此问题。 我们必须检查不同的价值取决于网络流量。 这个值uwsgi.ini文件中的socket-timeout = 65在我的情况下工作。

我在Elastic Beanstalk单容器Docker Wsgi应用程序部署中遇到了同样的零星错误。 在环境上游配置的EC2实例上看起来像:

upstream docker { server 172.17.0.3:8080; keepalive 256; }

有了这个默认的上游简单负载测试,如:

sIEge -b -c 16 -t 60S -T 'application/Json' 'http://host/foo POST {"foo": "bar"}'

…在EC2导致约70%的可用性。 其余的是上游过早关闭连接时从上游读取响应头时造成的502错误。

解决方法是从上游配置中删除保keepalive设置,或者更容易和更合理的是使用--http-keepalive ( 从1.9开始可用 )在uWsgi侧启用http保持活动。

在我的情况下,问题是Nginx正在用uwsgi协议发送请求,而uwsgi正在监听该端口上的http数据包。 所以要么我不得不改变Nginx连接到uwsgi的方式,或者改变uwsgi来使用uwsgi协议来监听。

总结

以上是内存溢出为你收集整理的uwsgi + nginx +烧瓶:上游过早closures全部内容,希望文章能够帮你解决uwsgi + nginx +烧瓶:上游过早closures所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1155455.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存