服务器之家

服务器之家 > 正文

Flask 使用类组织配置详情

时间:2022-03-08 11:44     来源/作者:tigeriaf

Flask 使用类组织配置详情

在实际的项目中,我们一般都会建立三个环境:开发、测试和生产环境,这三种环境会使用不同的配置组合,为了能方便地切换配置,我们可以为不同的环境创建不同的配置文件,但是最方便的做法是在单个配置文件中使用 Python 类来组织多个不同类别的配置。

例如下面是一个应用的配置文件 settings.py,它包含一个基本配置类 BaseConfig

还有其他特定的配置类:

  • 开发配置类 DevelopConfig
  • 测试配置类 TestCofig
  • 生产配置类 ProductConfig

这些特定配置类都继承自基本配置类。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import logging
 
import os
 
class BaseConfig(object):
 
    DEBUG = True
 
    SECRET_KEY = "qwertyuiop"
 
    SQLALCHEMY_DATABASE_URI = "mysql://username:password@192.168.1.89:3306/app_db"
 
    SQLALCHEMY_TRACK_MODIFICATIONS = False
 
    REDIS_URL = "redis://:password@192.168.1.89:6379/0"
 
    LEVEL_NAME = logging.DEBUG
 
class DevelopConfig(BaseConfig):
 
    pass
 
class TestConfig(BaseConfig):
 
    TESTING = True
 
    SQLALCHEMY_DATABASE_URI = "mysql://username:password@192.168.1.123:3306/app_db"
 
class ProductConfig(BaseConfig):
 
    DEBUG = False
 
    LEVEL_NAME = logging.ERROR
 
    SQLALCHEMY_DATABASE_URI = os.getenv("DATABASE_URL", "mysql://username:password@**.***.*.**:3306/app_db")
 
config_dict = {
 
    "develop": DevelopConfig,
 
    "product": ProductConfig,
 
    "test": TestConfig
 
}

上述代码中,首先建立了一个基本配置类 BaseConfig 并初始化了一些配置信息,然后针对不同的环境建立了不同的类继承自 BaseConfig 类,重新设置了不同的配置信息,例如数据库 url,测试环境与开发环境不同,生产环境优先从环境变量中获取。

然后,创建了一个字典来存储配置名称和配置类的映射,相当于提供了一个配置信息的访问入口,可以根据指定的配置名称来获取对应的配置类。

编写好了配置文件,我们在应用主程序中创建 Flask 实例 app 时,就可以使用后app.config.from_object()方法加载配置,

例如:

?
1
2
3
4
5
6
7
from settings import config_dict
 
app = Flask(__name__)
 
config_name = os.getenv('CONFIG_NAME', 'develop')
 
app.config.from_object(config_dict[config_name])

首先从配置文件中导入配置名称和配置类的映射字典 config_dict,从环境变量 CONFIG_NAME 读取配置名称,然后通过app.config.from_object()方法加载指定配置信息,如果没有读取到 CONFIG_NAME,默认使用 develop,对应的配置类即 DevelopmentConfig

Flask 支持多种方式加载配置信息,除了上述的从 Python 类中加载,还支持 从 JSON 文件中加载、从 py 文件中加载等,app.config类提供了不同的方法来加载不同格式的配置文件,还是比较灵活的。

到此这篇关于 Flask   使用类组织配置详情的文章就介绍到这了,更多相关 Flask   使用类组织配置内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://juejin.cn/post/7033563216223420446

标签:

相关文章

热门资讯

2022年最旺的微信头像大全 微信头像2022年最新版图片
2022年最旺的微信头像大全 微信头像2022年最新版图片 2022-01-10
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整 2021-08-24
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
返回顶部