zoukankan      html  css  js  c++  java
  • Python

    一、 gunicorn介绍

    1.1 gunicorn

    gunicorn是一个python Wsgi http server,只支持在Unix系统上运行,来源于Ruby的unicorn项目。

    Gunicorn使用prefork master-worker模型(在gunicorn中,master被称为arbiter),能够与各种wsgi web框架协作。

    1.2 WSGI协议

    Web框架致力于如何生成HTML代码,而Web服务器用于处理和响应HTTP请求。

    Web框架和Web服务器之间的通信,需要一套双方都遵守的接口协议。WSGI协议就是用来统一这两者的接口的。

    常用的WSGI容器有Gunicorn和uWSGI,但Gunicorn直接用命令启动,不需要编写配置文件,相对uWSGI要容易很多。

    二、gunicorn安装和使用

    2.1 安装

    gunicorn安装非常简单,使用命令pip install gunicorn即可。一般使用它,主要是为使用其异步的worker模型,还需要安装对应的异步模块。

    $ pip install greenlet   # 使用异步必须安装
    $ pip
    install eventlet # 使用eventlet workers $ pip install gevent # 使用gevent workers

    2.2 使用

    使用gunicorn来部署一个flask项目举例,保存为wsgi.py

    from flask import Flask
    app = Flask(__name__)
    # Debug模式
    app.config['DEBUG'] = False
    
    @app.route("/")
    def hello():
        return "Hello World!"

    关于 debug = True:

    生产环境不需要这个配置项,但调试的时候还是挺好用的。而且,开启debug项后,在启动gunicorn的时候可以看到所有可配置项的配置。

    gunicorn通常使用的参数如下:

    -c CONFIG, --config=CONFIG       # 设定配置文件。
    -b BIND, --bind=BIND             # 设定服务需要绑定的端口。建议使用HOST:PORT。
    -w WORKERS, --workers=WORKERS    # 设置工作进程数。建议服务器每一个核心可以设置2-4个。
    -k MODULE                        # 选定异步工作方式使用的模块。
    --log-level LEVEL                # 错误日志输出等级。
    --capture-output                 # 重定向到错误日志。
    --enable-stdio-inheritance       # 启用stdio继承
    # Ex:
    gunicorn wsgi:app -w 4 -b 0.0.0.0:5000 --log-level debug --capture-output --enable-stdio-inheritance

    # 结束gunicorn进程,只需要kill命令杀死即可。
    ps -ef | grep gunicorn

    注意:linux通常会禁止绑定使用1024以下的端口,除非在root用户权限。很多人在使用gunicorn时试图将其绑定到80或者443端口,发现无效就是这个原因。

  • 相关阅读:
    hdu_5718_Oracle(大数模拟)
    hdu_2222_Keywords Search(AC自动机板子)
    hdu_5616_Jam's balance(暴力枚举子集||母函数)
    hdu_2255_奔小康赚大钱(KM带权二分匹配板子)
    hdu_2544_最短路(spfa版子)
    hdu_2457_DNA repair(AC自动机+DP)
    hdu_5555_Immortality of Frog(状压DP)
    hdu_2159_FATE(完全背包)
    [USACO2002][poj1944]Fiber Communications(枚举)
    [AHOI2013]打地鼠(网络流)
  • 原文地址:https://www.cnblogs.com/blitheG/p/14647924.html
Copyright © 2011-2022 走看看