uwsgi使用

使用了gevent一段时间之后,应用进程占用的内存稳步增长,一不小心就好几百M了,gevent应该存在一些内存泄漏,同时还有一些其他问题, 放到生产环境中很不适合。于是查找了一些其他的wsgi server,看了国外的一些评测,选定了uwsgi,安装之后,和gevent进行了一些测试比较,两者相差不多,在响应速度上似乎uwsgi要胜出一 点。

下载源码之后,直接make,得到uwsgi,就可以直接用了。

首先设置django应用的配置文件,django-uwsgi.py文件格式如下:

import os
os.environ['DJANGO_SETTINGS_MODULE'] = ‘yourapp.settings’

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

uwsgi启动命令:

/var/www/uwsgi –socket 127.0.0.1:8098 –pythonpath /var/www/yourapp -w django-uwsgi -p 10 -M -d /var/log/nginx/uwsgi-yourapp.log –uid www-data –l 10000

nginx中的配置非常简单,nginx从0.8.40之后,默认支持了uwsgi协议。

location / {
    uwsgi_pass 127.0.0.1:8098;
    include uwsgi_params;
}

uwsgi中的-p 10表示启动10个进程,-l 10000 表示处理了10000次请求之后,会自动重新启动该进程。

uwsgi的重启也非常优雅,和nginx一样,发一个信号过去,uwsgi的主控制程序会等候应用进程处理完当前事务之后,再进行重启。uwsig的说明在http://projects.unbit.it/uwsgi/wiki/uWSGIReload

重启命令:

sudo killall -s HUP /var/www/uwsgi

和nginx的信号一样

原文地址:https://www.cnblogs.com/shihao/p/2509348.html