我正在使用 uwsgi 和 nginx 的组合来为我的 flask 应用程序提供服务。发生的情况是,几个小时后(在非常低的负载下,<几百个请求)请求超时,直到我重新启动 uwsgi 进程并且一切在相同的时间内再次正常工作。
这里是 nginx 配置:
server {
listen 3001;
server_name localhost;
charset utf-8;
client_max_body_size 75M;
location / { try_files $uri @myapp; }
location @myapp {
include uwsgi_params;
uwsgi_pass unix:/my/dir/uwsgi.sock;
}
}
我的uwsgi.ini:
[uwsgi]
#application's base folder
base = /my/dir
#python module to import
app = app
module = %(app)
home = %(base)/venv
pythonpath = %(base)
#socket file's location
socket = /my/dir/%n.sock
#permissions for the socket file
chmod-socket = 666
#the variable that holds a flask application inside the module imported at line #6
callable = app
#location of log files
logto = /my/dir/log/%n.log
~
我如何启动uwsgi进程:
/my/dir/venv/bin/uwsgi --ini /my/dir/uwsgi.ini
答案1
您的堆栈(特别是没有配置并发的情况下)可能以多种方式挂起。
我建议你调查原因,而不是绕过它(使用 harakiri 之类的功能)。启用 uWSGI tracebacker 来了解应用程序卡住时发生了什么:
http://uwsgi-docs.readthedocs.org/en/latest/Tracebacker.html