Gunicorn
简介
Gunicorn“绿色独角兽”是一个被广泛使用的高性能的Python WSGI UNIX HTTP服务器,移植自Ruby的独角兽(Unicorn )项目,使用pre-fork worker模式,具有使用非常简单,轻量级的资源消耗,以及高性能等特点。
Gunicorn 服务器作为wsgi app的容器,能够与各种Web框架兼容(flask,django等),得益于gevent等技术,使用Gunicorn能够在基本不改变wsgi app代码的前提下,大幅度提高wsgi app的性能。
工作原理
gunicorn 会启动一组 worker进程,所有worker进程公用一组listener,在每个worker中为每个listener建立一个wsgi server。每当有HTTP链接到来时,wsgi server创建一个协程来处理该链接,协程处理该链接的时候,先初始化WSGI环境,然后调用用户提供的app对象去处理HTTP请求。
gunicorn+gevent启动项目
安装gunicorn与gevent
pip install gunicorn
pip install gevent
新建gunicorn-config.py文件(与项目settings.py文件同级,内容如下)
from multiprocessing import cpu_count
bind = ["0.0.0.0:9999"]
daemon = True # 是否开启守护进程模式
pidfile = 'logs/gunicorn.pid'
workers = cpu_count() * 2 # 工作进程数量
wprker_class = "gevent" # 指定一个异步处理的库
worker_connections = 65535
keepalive = 60 # 服务器保持连接的时间,能够避免频繁的三次握手过程
timeout = 30
graceful_timeout = 10
forwarded_allow_ips = '*'
# 日志处理
capture_output = True
loglevel = 'info'
errorlog = 'logs/error.log'
启动项目
gunicorn -c 项目配置目录名称/gunicorn-config.py 项目配置目录名称.wsgi
nginx代理gunicorn服务
安装nginx
配置nginx.conf文件(加入以下内容)
server {
listen 8110; # 监听端口
server_name location;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:9999; # gunicorn服务端口
break;
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /static/ {
alias /home/projectCode/backEndCode/serverManagement/static/; # 静态文件路径
break;
}
}
启动nginx
进入nginx安装目录下sbin文件夹,执行
./nginx启动nginx服务
1528

被折叠的 条评论
为什么被折叠?



