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 1269 迷宫城堡
    HDU 4771 Stealing Harry Potter's Precious
    HDU 4772 Zhuge Liang's Password
    HDU 1690 Bus System
    HDU 2112 HDU Today
    HDU 1385 Minimum Transport Cost
    HDU 1596 find the safest road
    HDU 2680 Choose the best route
    HDU 2066 一个人的旅行
    AssetBundle管理机制(下)
  • 原文地址:https://www.cnblogs.com/blitheG/p/14647924.html
Copyright © 2011-2022 走看看