现在,我们已经设置了uwsgi的主机数量并分配了权重值,从9000端口开始,它们都是被uwsgi配置使用的套接字地址。
uwsgi
另一方面,我们使用supervisor来控制uwsg进程,这也非常简单:
# recipes/web.rb
command ="/srv/www/getsentry.com/env/bin/uwsgi -s 127.0.0.1:90%(process_num)02d --need-app --disable-logging --wsgi-file getsentry/wsgi.py --processes 1 --threads #{node['getsentry']['web']['threads']}"
supervisor_service "web"do
directory "/srv/www/getsentry.com/current/"
command command
user "dcramer"
stdout_logfile"syslog"
stderr_logfile "syslog"
startsecs 10
stopsignal "QUIT"
stopasgroup true
killasgroup true
process_name '%(program_name)s %(process_num)02d'
numprocs node['getsentry']['web']['processes']end
位置的选择
除非有人想出了一个非常有说服力的论据:为什么应该有另一种方式(或某种该情形下不能工作的情况),我希望能听到这种模式因为Python的世界变得更标准。最起码,我希望看到关于如何提高uwsgi内进程管理的一些辩论的火花。
如果你要精简这个帖子,留下这句话:uwsgi线程(或非线程)服务是Python的Web应用的程序唯一选择。
转自:
相关阅读:
Nginx + Uwsgi + Pylons + Virtual Host
uWSGI + Nginx 部署 Flask Web 应用
Ubuntu Server 12.04 安装Nginx+uWSGI+Django环境
Linux下Nginx+uWSGI部署Python应用
Django+Nginx+uwsgi 部署