• Flask 学习91.使用 gunicorn 部署 flask 上海


    前言

    flask 启动访问平常开发的时候可以用命令行flask run运行,正式部署到线上环境不会这样用。

    Gunicorn 环境准备

    Web框架致力于如何生成HTML代码,而Web服务器用于处理和响应HTTP请求。Web框架和Web服务器之间的通信,需要一套双方都遵守的接口协议。WSGI协议就是用来统一这两者的接口的
    常用的 WSGI 容器有 Gunicorn 和 uWSGI,用 Gunicorn 可以直接命令启动,不需要编写配置文件,相对uWSGI要容易很多,这里选择用Gunicorn作为容器。
    Gunicorn 是一个Python WSGI HTTP服务器, 只支持在Unix/Linux环境下运行。

    项目结构与代码

    from flask import Flask, render_template
    
    app = Flask(__name__)
    
    
    @app.route('/')
    def hello_world():
        return 'Hello World!'
    
    
    @app.route('/hello')
    def hello():
        return render_template('hello.html')
    
    
    if __name__ == '__main__':
        app.run()
    
    

    hello.html内容

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>demo</title>
    </head>
    <body>
    <p>hello world</p>
    
    </body>
    </html>
    

    先准备一台Unix/Linux 服务器安装 python3.8环境 , 不支持windows系统
    安装flask 相关的包

    pip3 install flask 
    

    安装 Gunicorn

    pip install gunicorn
    

    官方文档示例

    Gunicorn ‘Green Unicorn’ 是一个 UNIX 下的 WSGI HTTP 服务器,它是一个 移植自 Ruby 的 Unicorn 项目的 pre-fork worker 模型。它既支持 eventlet , 也支持 greenlet 。在 Gunicorn 上运行 Flask 应用非常简单:

    $ gunicorn myproject:app
    

    Gunicorn 提供许多命令行参数,可以使用 gunicorn -h 来获得帮助。下面 的例子使用 4 worker 进程( -w 4 )来运行 Flask 应用,绑定到 localhost 的 4000 端口( -b 127.0.0.1:4000 ):

    $ gunicorn -w 4 -b 127.0.0.1:4000 myproject:app
    

    gunicorn 命令需要你应用或者包的名称和应用实例。如果你使用工厂模式,那么 可以传递一个调用来实现:

    $ gunicorn "myproject:create_app()"
    

    启动服务

    使用 gunicorn -h查看相关命令行帮助, 也可以检查 gunicorn 是否安装成功

    常用的几个参数

    -c CONFIG    : CONFIG,配置文件的路径,通过配置文件启动;生产环境使用;
    
    -b ADDRESS   : ADDRESS,ip加端口,绑定运行的主机;
    
    -w INT, --workers INT:用于处理工作进程的数量,为正整数,默认为1;
    
    -k STRTING, --worker-class STRTING:要使用的工作模式,默认为sync异步,可以下载eventlet和gevent并指定
    
    -p FILE, --pid FILE:设置pid文件的文件名,如果不设置将不会创建pid文件
    
    --error-logfile FILE, --log-file FILE  :  要写入错误日志的文件目录。
    
    --log-level LEVEL   :   错误日志输出等级。
    
    -t INT, --timeout INT:超过这么多秒后工作将被杀掉,并重新启动。一般设定为30秒;
    
    -e ENV, --env ENV: 设置环境变量;
    

    启动命令

    gunicorn -w 2 -b 0.0.0.0:8001 app:app
    

    启动成功日志

    [root@iZ2vchn8sk983jm605yhshZ flask_web]# gunicorn -w 2 -b 0.0.0.0:8001 app:app
    [2022-10-15 19:41:21 +0800] [25918] [INFO] Starting gunicorn 20.1.0
    [2022-10-15 19:41:21 +0800] [25918] [INFO] Listening at: http://0.0.0.0:8001 (25918)
    [2022-10-15 19:41:21 +0800] [25918] [INFO] Using worker: sync
    [2022-10-15 19:41:21 +0800] [25921] [INFO] Booting worker with pid: 25921
    [2022-10-15 19:41:21 +0800] [25922] [INFO] Booting worker with pid: 25922
    

    启动端口是8001端口,服务器只要开放对应端口,就可以访问了
    浏览器输入地址http://服务器ip:8001/hello

  • 相关阅读:
    How to use django with mod_wsgi ¶
    How to install Apache2 (CentOS 5.4)
    Review Board
    代理
    你的第一个Javascript服务器端程序(一)
    程序员的十层楼(6~7层)
    用你自己的插件扩展jQuery(Extend jQuery with Your Very Own Plugin)
    程序员的十层楼(1~5层)
    C#到Java byte类型冲突的解决
    Hadoop出现allocate memory错误的解决
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/16794906.html
Copyright © 2020-2023  润新知