03-Flask-工程配置加载方式

工程配置加载方式


前言

  • 本篇来学习下Flake工程配置加载方式

配置对象中加载

  • 应用场景:作为默认配置写在代码中
python 复制代码
# -*- coding: utf-8 -*-
# @Time    : 2023/9/2
# @Author  : 大海
from flask import Flask


class DefaultConfig(object):
    """默认配置"""

    MYSQL_HOST = '192.168.66.66'


app = Flask(__name__)

# 设置配置对象方式读取配置
app.config.from_object(DefaultConfig)


@app.route('/')
def index():
    # 读取配置,相当于字典中取值
    mysql_host = app.config.get('MYSQL_HOST')
    # mysql_host = app.config['MYSQL_HOST']
    print(mysql_host)
    return '<b>Hello 大海!</b>'


if __name__ == '__main__':
    app.run()

配置文件中加载

  • 应用场景:项目中使用固定的配置文件
python 复制代码
# setting.py
# -*- coding: utf-8 -*-
# @Time    : 2023/9/2
# @Author  : 大海

MYSQL_HOST = '192.168.88.88'
python 复制代码
# -*- coding: utf-8 -*-
# @Time    : 2023/9/2
# @Author  : 大海

from flask import Flask


app = Flask(__name__)

# 设置配置文件方式加载配置
app.config.from_pyfile('setting.py')


@app.route('/')
def index():
    # 读取配置,相当于字典中取值
    mysql_host = app.config.get('MYSQL_HOST')
    # mysql_host = app.config['MYSQL_HOST']
    print(mysql_host)
    return '<b>Hello 大海!配置文件方式加载配置。</b>'


if __name__ == '__main__':
    app.run()

环境变量中加载

  • 先设置环境变量
shell 复制代码
# export 变量名=配置文件名   Linux系统环境中使用
export PROJECT_SETTING=setting.py
python 复制代码
# -*- coding: utf-8 -*-
# @Time    : 2023/9/2
# @Author  : 大海

from flask import Flask

app = Flask(__name__)

# 设置环境变量方式加载配置
app.config.from_envvar('PROJECT_SETTING', silent=True)


@app.route('/')
def index():
    # 读取配置,相当于字典中取值
    mysql_host = app.config.get('MYSQL_HOST')
    # mysql_host = app.config['MYSQL_HOST']
    print(mysql_host)  
    return '<b>Hello 大海!环境变量方式加载配置。</b>'


if __name__ == '__main__':
    app.run()

silent 参数说明:

  1. Flase:没找到变量值时,报错通知,默认为Flase
  2. True:没找到变量值时也正常运行下去

三种配置方式优缺点

  1. 配置对象
    • 优点:继承,可复用
    • 缺点:敏感数据暴露代码中
  2. 配置文件
    • 优点:独立配置文件,保护敏感数据
    • 缺点:不能继承,文件路径固定,不灵活
  3. 环境变量
    • 优点:独立配置文件,保护敏感数据,文件路径不固定,灵活
    • 缺点: 不方便,要记得设置环境变量

工厂模式创建Flask app

shell 复制代码
# -*- coding: utf-8 -*-
# @Time    : 2023/9/2
# @Author  : 大海

from flask import Flask


class DefaultConfig(object):
    """默认配置"""

    MYSQL_HOST = '192.168.66.66'


def create_flask_app(config):
    app = Flask(__name__)

    # 设置配置对象方式读取配置
    app.config.from_object(config)
    # 设置环境变量方式加载配置
    app.config.from_envvar('PROJECT_SETTING', silent=True)

    return app


app = create_flask_app(DefaultConfig)


@app.route('/')
def index():
    # 读取配置,相当于字典中取值
    mysql_host = app.config.get('MYSQL_HOST')
    # mysql_host = app.config['MYSQL_HOST']
    print(mysql_host)
    return '<b>Hello 大海!</b>'


if __name__ == '__main__':
    app.run()
相关推荐
yunsr3 分钟前
python作业3
开发语言·python
历程里程碑5 分钟前
普通数组-----除了自身以外数组的乘积
大数据·javascript·python·算法·elasticsearch·搜索引擎·flask
曦月逸霜5 分钟前
Python快速入门——学习笔记(持续更新中~)
笔记·python·学习
喵手7 分钟前
Python爬虫实战:采集菜谱网站的“分类/列表页”(例如“家常菜”或“烘焙”频道)数据,构建高可用的美食菜谱数据采集流水线(附CSV导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集菜谱网站数据·家常菜或烘焙频道·构建高可用食谱数据采集系统
喵手9 分钟前
Python爬虫实战:硬核解析 Google Chrome 官方更新日志(正则+文本清洗篇)(附 CSV 导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·csv导出·监控谷歌版本发布历史·获取稳定版更新日志
小邓睡不饱耶11 分钟前
实战|W餐饮平台智能化菜品推荐方案(含Spark实操+算法选型+完整流程)
python·ai·ai编程·ai写作
草莓熊Lotso13 分钟前
Qt 主窗口核心组件实战:菜单栏、工具栏、状态栏、浮动窗口全攻略
运维·开发语言·人工智能·python·qt·ui
aiguangyuan17 分钟前
基于BiLSTM-CRF的命名实体识别模型:原理剖析与实现详解
人工智能·python·nlp
禹凕22 分钟前
Python编程——进阶知识(MYSQL引导入门)
开发语言·python·mysql
阿钱真强道24 分钟前
13 JetLinks MQTT:网关设备与网关子设备 - 温控设备场景
python·网络协议·harmonyos