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支持多种工作者进程。

posted @ 2023-06-09 16:29  wangssd  阅读(440)  评论(0编辑  收藏  举报