首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Flask 学习-91.使用 gunicorn 部署 flask

Flask 学习-91.使用 gunicorn 部署 flask

作者头像
上海-悠悠
发布2023-01-03 13:12:47
发布2023-01-03 13:12:47
2K0
举报

前言

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

Gunicorn 环境准备

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

项目结构与代码

代码语言:javascript
复制
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内容

代码语言:javascript
复制
<!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 相关的包

代码语言:javascript
复制
pip3 install flask

安装 Gunicorn

代码语言:javascript
复制
pip install gunicorn

官方文档示例

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

代码语言:javascript
复制
$ gunicorn myproject:app

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

代码语言:javascript
复制
$ gunicorn -w 4 -b 127.0.0.1:4000 myproject:app

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

代码语言:javascript
复制
$ gunicorn "myproject:create_app()"

启动服务

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

常用的几个参数

代码语言:javascript
复制
-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:设置环境变量;

启动命令

代码语言:javascript
复制
gunicorn -w 2 -b 0.0.0.0:8001 app:app

启动成功日志

代码语言:javascript
复制
[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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Gunicorn 环境准备
  • 官方文档示例
  • 启动服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档