Flask uwsgi nginx:504 Gateway Time out

uwsgi+nginx部署的web站点运行时可能产生504 Gateway Time out这样的错误,究其原因是因为相关参数设置的不当。

nginx和uwsgi整合时有三个参数可以用于设置超时时间,在nginx配置文件http->server->location中设置。

uwsgi_connect_timeout:默认60秒,与uwsgi-server连接的超时时间,该值不能超过75秒.若在超时时间内未能成功连接则断开连接尝试。
uwsgi_read_timeout:默认60秒,nginx等待uwsgi进程发送响应数据的超时时间。若有需要长时间运行才能产生输出结果的uwsgi进程则需将此参数调高。若在错误日志文件中看到 upstream timed out需将此参数调高。若超过超时时间还未收到响应则nginx关闭连接。
uwsgi_send_timeout:默认60秒,nginx向uwsgi进程发送请求的超时时间。超时时间由两次写操作的时间间隔算,而非整个请求。若超过超时时间仍没写入动作则nginx关闭连接。

另外uwsgi自身还有一个参数harakiri(在uwsgi.xml或uwsgi.ini中配置),若每次请求需要花费超过该值的时间则放弃该请求处理相应的worker被收回.



Nginx下Uwsgi模块常用参数说明

Nginx下的Uwsgi

官方文档

实际配置(/etc/nginx/nginx.conf)

该例中,只用到3个参数

server {
        listen   5000;
        server_name localhost; if ( $request_method !~ ^(GET|HEAD|POST)$ ) { return 403;
        }

        location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:3031;
        uwsgi_read_timeout 180;
        }
}

(部分)参数说明

uwsgi_bind

default: none
绑定一个ip地址,uwsgi通过该绑定的地址与外界通信.

uwsgi_buffer_size

default: uwsgi_buffer_size 4k/8k
读缓冲的大小,默认情况下,等同于uwsgi_buffers,不过它可以设置的更小.

uwsgi_buffering

default: uwsgi_buffering on
响应缓冲

uwsgi_buffers

default: uwsgi_buffers 8 4k/8k
设置读缓冲区的数量和大小,默认是8个,4k, 用于缓存从uwsgi服务的应答.

uwsgi_cache

default: off
共享缓存

uwsgi_connect_timeout

default: uwsgi_connect_timeout 60
连接uWSGI-Server的超时时间,不能超过75秒

uwsgi_ignore_client_abort

default: uwsgi_ignore_client_abort off
忽略uWSGI-Server返回的终止响应.

uwsgi_modifier1

default: 0
为uwsgi请求设置第一个修饰符,默认是WSGI请求.(??)

uwsgi_modifier2

default: 0

uwsgi_param

default: none
指定uWSGI-server, 参数可以是字符串,变量,或者它们的组合.

uwsgi_pass

default: none
指定uWSGI-server的IP地址和端口,或者socket文件
或者定义负载均衡器

upstream backend  {
  server 192.168.0.1:3031;
  server 192.168.0.2:3031;
}
 
uwsgi_pass   backend;

uwsgi_read_timeout

default: uwsgi_read_timeout 60
设置一个等待uwsgi返回数据的超时时间.

uwsgi_send_timeout

default: uwsgi_send_timeout 60
设置一个向uwsgi发动请求的超时时间

时间: 2024-10-29 19:07:10

Flask uwsgi nginx:504 Gateway Time out的相关文章

Flask+uwsgi+Nginx+Ubuntu部署教程

学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的过程就会重复一次.不知道多少人的膝盖中箭了呢?我也这样干过,这么做确实很蠢,所以我决定写一篇 Flask+uwsgi+Nginx+Ubuntu 的部署教程,解答一些我自己在这个过程中的疑问,从原理到方案,以一个小白的角度,总结一下部署.运维这件事,应该对初学 Flask 需要部署的同学有些帮助. 环

nginx 504 Gateway Time-out 解决办法

今天用PHP执行一个非常耗时的文件[ps:自己有用,大概3分钟] 但是执行到一分钟后显示 nginx 504 Gateway Time-out 于是修改php-ini.php中的max_execution_time =1200;重启php,还是没用 突然明白,如果是超时是php设置的问题,会报以下错误 Fatal error: Maximum execution time of 60 seconds exceeded in E:\ceshi\001\map.php on line 27 所以问题

nginx 504 Gateway Time-out错误排查

一次nginx 504 Gateway Time-out错误排查.解决记录,经过反复检查,发现造成这个问题的原因就是PHP的CURL没有设置超时时间,解决办法只要设置超时时间或者修改一下nginx的配置即可解决. 记一次莫名其妙的网站失去响应排查.之前网站一直是使用nginx做代理后端的apache运行php来提供服务.apache经常会不定期不定时间的出现不能服务失去响应,然后nginx出现"504 Gateway Time-out"查看错误日志也看不到任何东西,以为是apache的

Flask+uwsgi+Nginx+Ubuntu部署

学了一段时间flask,可是一直没有做过部署, 于是想着怎么部署呢, 想想,先吧服务给搞通吧,于是呢 就先想着去吧服务给搞起来,这里选择的是Flask+uwsgi+Nginx+Ubuntu, Python选择的是2.7.2这个是Ubuntu系统自带的学起来感觉还是简单的 不用去软连,目前自己的flask是python3写的 ,慢慢去过渡,先吧这个给搞通了,那么在优化也是很顺手的.其实对于很多的原理自己也是一知半解,先吧这个给搭起来,慢慢去了解里面的逻辑什么的. Nginx Nginx 是高效的

记一次 nginx 504 Gateway Time-out

今天程序在执行一项excel导出任务的时候 出现了nginx超时的提示 nginx 504 Gateway Time-out 排查过程: 查看该任务 发现内容是一个数据量20000条信息 每条信息有50个字段 在执行导出为excel的时候 出现了该问题 执行时间大概在10分钟左右就出现超时 分析: Nginx 504 Gateway Time-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的PHP-CGI 通常以下几种情况会导致这个问题: 1.程序在处理大量的数据,或者有死

Flask+uwsgi+Nginx环境搭建

开源软件准备需要的软件列表:setuptools-33.1.1.zipPython-2.7.13.tgzpip-9.0.1.tar.gznginx-1.10.3.tar.gz软件统一上传到/usr/local/src/下,python是使用自己编译的. Python安装 先安装以下的软件(如果有的话,就可以不安装了,例如使用rpm -qa zlib-devel先查看下)yum install zlib-devel -yyum install openssl-devel -y tar -zxvf解

解决nginx 504 Gateway Time-out的一些方法

在CentOS下配置lnmp组合基本上用的都是同样的配置文件,一直都没出现过问题,可最近在一个vps上安装同样的环境之后,网站在线10多人就出 现了打开速度非常缓慢的情况,有好几次都是直接达到了nginx中设置的脚本最大超时时间300秒,结果导致nginx往客户端浏览器发送了一个504 Gateway Time-out的错误代码,分析了之后改动了几处配置文件,终于避免了该情况的出现.    从 错误代码基本可以确定跟nginx本身无关,主要是提交给php-fpm的请求未能正确反馈而导致,一般情况

flask uwsgi nginx 部署文档

系统包安装 # more /etc/redhat-release CentOS Linux release 7.3.1611 (Core) # # yum install epel-release # yum install -y nginx # yum install -y uwsgi # yum install -y uwsgi-plugin-python 2.python packets 1). setuptools # wget https://pypi.python.org/packa

【Flask】flask+uwsgi+nginx环境部署

在centos上,部署flask框架的环境,我选择了uwsgi和nginx 具体步骤为: 配置nginx+uwsgi 安装nginx  nginx/1.12.2安装Flask  0.10.1安装uwsgi  2.0.16(64bit)安装uwsgi-plugin-python 2.0.16 创建一个flask项目 1 #!/usr/bin/python 2 # coding=utf-8 3 4 from flask import Flask 5 import sys 6 reload(sys)