Flask是常用的Python WEB框架, 加载配置文件涉及类Config,源代码路径/Lib/site-packages/flask/config.py
config.py
注意事项:源码注释中明确指出,各配置项命名必须大写,否则将无法生效,这也是新手需要注意的地方。
二、Flask加载配置文件的几种方式通过阅读源代码,我们可以总结得出如下几种加载配置文件的方式:
方式一:from_pyfile
从文件中加载,文件可以是.py、.cfg、.txt等,需要注意的是文件的内容需要符合python语法。
示例:
test_app = Flask(__name__)
test_app.config.from_pyfile("D://test_python//my_flask.cfg")
my_flask.cfg文件
方式二: from_envvar
从环境变量中加载配置文件,需要先设置环境变量,环境变量的值为配置文件的路径,例如:
set FLASK_CONFIG = D:/test_python/my_flask.cfg
示例:
test_app = Flask(__name__)
test_app.config.from_envvar("FLASK_CONFIG")
需要注意的是,WINDOWS环境下设置环境变量需要重启主机才能生效。
方式三:from_json
从json格式文件中加载配置文件。
示例:
test_app.config.from_json("D://test_python//my_flask_json.txt")
my_flask_json.txt
文件中的内容必须是规范标准的JSON格式。
方式四:from_mapping
从字典变量中加载配置。
示例:
test_app.config.from_mapping({"HOST" : "127.0.0.1","PORT": 8009,"REDIS_HOST" : '127.0.0.1',"REDIS_PORT" : 7100,"REDIS_PASSWD" : 123456,"REDIS_DB" : 0}
方式五:from_object
从对象中加载配置,这也是项目中经常用到的方式。
class Config:
HOST = '127.0.0.1'
PORT = 8008
DEBUG = False
test_app.config.from_object(Config)
三、更新配置文件如果我们想要在系统启动之后,修改或者新增配置项,应该如何操作呢?最简单的方式就是参考方式四,调用from_mapping方法。
test_app.config.from_mapping({"WX_VERSION":”1.0.1”} #新增或者覆盖WX_VERSION配置
四、get_namespace在给配置项命名的时候,通常给同一组的配置项以相同的前缀,比如Redis配置:
REDIS_HOST = '127.0.0.1'
REDIS_PORT= 7100
REDIS_PASSWD = 123456
REDIS_DB = 0
此时,若希望获取Redis相关的配置,则可以使用get_namespace方法,例如:
test_app.config.get_namespace('REDIS_')
输出结果如下:
{'db': 0, 'host': '127.0.0.1', 'passwd': 123456, 'port': 7100}