Gunicorn 绿色独角兽‘是一个Python WSGI UNIX的HTTP服务器。
是一个pre-fork worker的模型,从Ruby的独角兽(Unicorn )项目移植。
该Gunicorn服务器大致与各种Web框架兼容,只需非常简单的执行,轻量级的资源消耗,以及相当迅速,具有实现简单,轻量级,高性能等特点。
gunicorn是一个wsgi http server,可以直接起停,提供http服务。
不过在production环境,起停和状态的监控最好用supervisior之类的监控工具,然后在gunicorn的前端放置一个http proxy server, 譬如nginx。

与 uWSGI 的性能比较:

gunicorn_demo.py
from flask import Flask app = Flask(__name__) @app.route(‘/demo‘, methods=[‘GET‘]) def demo(): return "gunicorn and flask demo."
启动:
gunicorn --workers 1 -k gevent --timeout 120 --bind 0.0.0.0:8182 "gunicorn_demo:app" --daemon --error-logfile error.log

测试结果:

gunicorn配置项可以通过gunicorn的启动命令行中设定,也可以通过配置文件指定。强烈建议使用一个配置文件。
配置项如下:
bind
监听地址和端口。
backlog
服务器中在pending状态的最大连接数,即client处于waiting的数目。超过这个数目, client连接会得到一个error。
建议值64-2048。
workers
worker进程的数量。建议值2-4 x $(NUM_CORES), 缺省为1。
worker_class
worker进程的工作方式。 有 sync, eventlet, gevent, tornado, gthread, 缺省值sync。
threads
工作进程中线程的数量。建议值2-4 x $(NUM_CORES), 缺省值1。
此配置只适用于gthread 进程工作方式, 因为gevent这种使用的是协程工作方式。
worker_connections
客户端最大同时连接数。只适用于eventlet, gevent工作方式。
max_requests
worker重启之前处理的最大requests数, 缺省值为0表示自动重启disabled。主要是防止内存泄露。
max_requests_jitter
抖动参数,防止worker全部同时重启。
timeout
通常设为30。
graceful_timeout
接收到restart信号后,worker可以在graceful_timeout时间内,继续处理完当前requests。
keepalive
server端保持连接时间。
limit_request_line
http request line最大字节数。值范围0-8190, 0表示无限制。
limit_request_field
http request中 header字段数的最大值。缺省为100,最大32768。
limit_request_field_size
http request header字段最大字节数。0表示无限制。
reload
当代码有修改时,自动重启workers。适用于开发环境。
reload_extra_files
扩展reload配置,增加templates,configurations等文件修改监控。
spew
跟踪程序执行的每一行。
check_config
检查配置。
sendfile
系统底层拷贝数据方式,提供performance。
chdir
在app加载之前,进入到此目录。
daemon
应用是否以daemon方式运行。
raw_env
key=value, 传递环境参数。
pidfile
pid存储文件路径。
worker_tmp_dir
临时工作目录。
user
指定worker进程的运行用户名。
group
指定worker进程运行用户所在组。
umask
gunicorn创建文件的缺省权限。
pythonpath
附加到python path的目录列表。
accesslog
访问日志文件路径。
access_log_format
日志格式。 例如 %(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s" 。
errorlog
错误日志路径。
loglever
日志级别。debug, info, warning, error, critical.
capture_output
重定向stdout/stderr到error log file。
logger_class
日志实现类。缺省gunicorn.glogging.Logger 。
logconfig
日志配置文件。同python标准日志模块logging的配置。
原文:https://www.cnblogs.com/wqbin/p/13395187.html