1. Gunicorn基本介绍
Gunicorn是一个基于Python实现的动态Web服务器,实现了WSGI协议,可以与Django、Flask等Web框架集成。
与Apache、Nginx等静态Web服务器相比,Gunicorn动态处理能力强。可以通过HTTP或者Unix Socket来与之通信,以此实现动静分离。
Gunicorn由于源码调用了fcntl、fork等接口,因此只能跑在类Unix系统上,Windows上跑不了。
Gunicorn通过pre-worker模型来实现并发,worker的工作模式有sync、gthread、gevent等,即可以通过多线程、或者协程来处理请求。
Gunicorn是可配置的,可以通过命令行参数或者配置文件的形式,来完成对其配置。
Gunicorn的日志功能丰富,可以输出到控制台、日志文件或者syslog服务器,另外日志分为http请求访问日志和程序运行时的错误日志,这点借鉴了Apache的思路。
2. Gunicorn源码结构【版本为 20.0.4】
├── app 【与Web框架通信相关】
│ ├── base.py
│ ├── __init__.py
│ ├── pasterapp.py
│ └── wsgiapp.py
├── arbiter.py 【master进程,在gunicorn中叫arbiter】
├── config.py 【配置相关,可以通过命令行参数、配置文件等方式来配置guniconrn】
├── debug.py
├── errors.py
├── glogging.py 【产生的日志,可以发送到屏幕或者日志文件(access和error)】
├── http 【处理客户端发送过来的http请求】
│ ├── body.py
│ ├── errors.py
│ ├── __init__.py