之前写代码需要启个nginx反向代理uwsgi, 很麻烦,后面干脆直接通过eventlet的monkeypath对http做协程处理,再之后考虑到易用性,换成了gunicorn.
Gunicorn是一个unix上被广泛使用的高性能的Python WSGI UNIX HTTP Server。和大多数的web框架兼容,并具有实现简单,轻量级,高性能等特点
#监听本机的5000端口 bind='127.0.0.1:5000' #开启4个进程 workers=4 #服务器中在pending状态的最大连接数,即client处于waiting的数目。超过这个数目, client连接会得到一个error。 backlog=2048 #工作模式为gevent worker_class="gevent" #工作线程数量,该配置只在worker_class是gthread的时候游泳,gevent,eventlet 等用的是协程 threads=10 #客户端的最大连接数,只在eventlet, gevent模式下有用 worker_connections=200 #worker重启之前处理的最大requests数, 缺省值为0表示自动重启disabled。主要是防止内存泄露。 max_requests=50 #优雅重启超时时间,重启后等待10s确认连接已经处理完了。 graceful_timeout=10 # debug模式 debug=True #pid文件 pidfile='debug.log' #日志级别 loglevel=‘debug' #日志输出格式化 access_log_format=%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"
python3 gunicorn -c conf/gunicorn.conf app-demo:app
from flask import Flask def create_app(): app = Flask(__name__) return app app = create_app()