Gunicorn:Python WSGI HTTP Server.
纯 Python 编写的高性能的 WSGI Server
pre-fork 预先分配多个 worker 进程处理请求(master-slave)。master-slave方式:一个master负责去管理多个worker进程,比如那个worker超时了把它重启,worker负责处理客服端的用户请求。
多钟 worker 支持:Sync 同步worker / Async(Gevent) 基于gevent的异步worker/ Tornado / AsyncIO。一般需要支持比较高的并发的时候,可以采用基于gevent的异步worker。
图解:使用Gunicorn来去部署 web的一种方式,首先客户端的请求先到Nginx这一层,Nginx负责反向代理,它就又把请求直接转发给Gunicorn。Gunicorn通过Pre-fork预先fork一堆worker进程,然后把请求转给worker进程处理请求。master进程它不会负责去处理请求,它只是负责监控和重启worker进程。
2.Gunicorn的代码示例
$ pip install gunicorn # 安装gunicorn
# 创建文件 myapp.py, 添加内容如下
def app(environ, start_response): # 一个web应用
data = b'Hello, World!\n'
start_response( "200 OK", [
("Content-Type", "text/plain"),
("Content-Length", str(len(data))
])
return iter([data])
$ gunicorn -w 4 myapp:app # 使用gunicorn指定4个worker启动 web应用
由于gunicorn部署个启动都非常容易,所以很多公司都使用 Gunicorn来作为 WSGI server。