工程配置加载方式

前言配置对象中加载配置文件中加载环境变量中加载三种配置方式优缺点工厂模式创建Flask app

前言

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

配置对象中加载

应用场景:作为默认配置写在代码中

# -*- 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 'Hello 大海!'

if __name__ == '__main__':

app.run()

配置文件中加载

应用场景:项目中使用固定的配置文件

# setting.py

# -*- coding: utf-8 -*-

# @Time : 2023/9/2

# @Author : 大海

MYSQL_HOST = '192.168.88.88'

# -*- 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 'Hello 大海!配置文件方式加载配置。'

if __name__ == '__main__':

app.run()

环境变量中加载

先设置环境变量

# export 变量名=配置文件名 Linux系统环境中使用

export PROJECT_SETTING=setting.py

# -*- 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 'Hello 大海!环境变量方式加载配置。'

if __name__ == '__main__':

app.run()

silent 参数说明:

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

三种配置方式优缺点

配置对象

优点:继承,可复用缺点:敏感数据暴露代码中 配置文件

优点:独立配置文件,保护敏感数据缺点:不能继承,文件路径固定,不灵活 环境变量

优点:独立配置文件,保护敏感数据,文件路径不固定,灵活缺点: 不方便,要记得设置环境变量

工厂模式创建Flask app

# -*- 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 'Hello 大海!'

if __name__ == '__main__':

app.run()

参考文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。