1. 概述
Flask ,django自带WSGI server,不过性能都不好,在线上发布时,应该使用更高性能的WSGI server
greenlet是一个轻量级的协程库,gevent是基于greenlet的网络库。gunicorn是支持WSGI协议的http server,gevent是它支持的模式之一。
2. 安装
pip install gunicorn
pip install gevent
3. 启动
gunicorn启动有很多参数,可以写到配置文件里,例如
config.txt
workers = 10 ##开启的进程数量 timeout = 600 ##超时 worker_class = "gevent" ###使用gevent模式 bind = "0.0.0.0:8383" ##绑定socket pidfile = '/var/run/gunicorn.pid' accesslog = '/var/log/gunicorn_acess.log' ##请求日志路径 errorlog = '/var/log/gunicorn_error.log' ##错误日志路径 loglevel = 'warning' ##输出errorlog的颗粒度 capture_output = True #重定向标准输出到错误日志
有了配置文件之后,启动
gunicorn run:app -c /path/config.txt可以加-D 将服务放到后台运行
run:app 当前目录的run.py文件里,启动app
gunicorn启动的时候,将run.py import导入,所以脚本并不是入口文件,__name__的值不等于__main__,所以不会执行下面的代码块。
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000, threaded=True)