Я использую комбинацию uwsgi и nginx для обслуживания своего фляжного приложения. Что происходит, так это то, что через несколько часов (при очень низкой нагрузке, <несколько сотен запросов) время ожидания запросов истекает, пока я не перезапущу процесс 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
Есть десятки способов, которыми ваш стек (особенно без параллелизма, как вы его настроили) мог зависнуть.
Я предлагаю вам выяснить, почему, вместо того, чтобы обходить его (с такими функциями, как харакири). Включите трассировщик uWSGI, чтобы понять, что происходит, когда приложение зависает:
http://uwsgi-docs.readthedocs.org/en/latest/Tracebacker.html