python gunicorn详解
Gunicorn是一个unix上被广泛使用的高性能的Python WSGI(Web Server Gateway Interface) UNIX HTTP Server。和大多数的web框架(flask)兼容,并具有实现简单,轻量级,高性能等特点。
Gunicorn用来解析HTTP请求的网关服务。是一种通用的接口规范,规定了web server(如Apache、Nginx)和web app(或web app框架)之间的标准。
通过Gunicorn来启动flask框架
def start_app_by_system(args, app, options): """ 启动配置项 :param args: 参数 :param app: 服务 :param options: 选项 :return: """ if platform.system() == "Windows": logger.info("启动flask应用,Windows平台不支持gunicorn和多进程") app.run(host=IP, port=args.port, debug=False) else: from web.gunicorn_app import StandaloneApplication logger.info("启动gunicorn应用") StandaloneApplication(app, options).run() def load_gunicorn_config(port, workers): """ Gunicorn 所需参数 :return: """ options = {"bind": "%s:%s" % (IP, str(port)), "workers": workers} return options
Gunicorn作用:
一个是链接wsgi 架构中的server,
一个作用是做进程管理(gunicorn擅长于管理多进程,一般用来管理多个进程,有进程挂了Gunicorn可以把它拉起来,防止服务器长时间停止服务,还可以动态调整 worker的数量,请求多的时候增加 worker 的数量,请求少的时候减少,这就是所谓的 pre-fork 模型)
flask是在对werkzeug简单封装的基础上形成的。作为一个轻量级的web框架,
flask容易上手,学习和进阶曲线不陡峭,是Python Web框架入门必须品。
flask自带了一个HTTP Server用于开发和调试,但是,受制于安全、性能等问题,该Server不能用于生产环境。
生产环境中部署flask等WSGI常用的组合是:nginx + gunicorn + application(flask应用等)
gunicorn是”主-从”模式,工作者进程用于接收用户请求并通知flask应用处理,
所以是工作者进程和flask通信的。
gunicorn支持多种工作者进程。