我在烧瓶上创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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)