Flask?使用類組織配置詳情

在實(shí)際的項(xiàng)目中,我們一般都會(huì)建立三個(gè)環(huán)境:開發(fā)、測(cè)試和生產(chǎn)環(huán)境,這三種環(huán)境會(huì)使用不同的配置組合,為了能方便地切換配置,我們可以為不同的環(huán)境創(chuàng)建不同的配置文件,但是最方便的做法是在單個(gè)配置文件中使用 Python 類來(lái)組織多個(gè)不同類別的配置。
例如下面是一個(gè)應(yīng)用的配置文件 settings.py,它包含一個(gè)基本配置類 BaseConfig,
還有其他特定的配置類:
- 開發(fā)配置類
DevelopConfig - 測(cè)試配置類
TestCofig - 生產(chǎn)配置類
ProductConfig
這些特定配置類都繼承自基本配置類。
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
}
上述代碼中,首先建立了一個(gè)基本配置類 BaseConfig 并初始化了一些配置信息,然后針對(duì)不同的環(huán)境建立了不同的類繼承自 BaseConfig 類,重新設(shè)置了不同的配置信息,例如數(shù)據(jù)庫(kù) url,測(cè)試環(huán)境與開發(fā)環(huán)境不同,生產(chǎn)環(huán)境優(yōu)先從環(huán)境變量中獲取。
然后,創(chuàng)建了一個(gè)字典來(lái)存儲(chǔ)配置名稱和配置類的映射,相當(dāng)于提供了一個(gè)配置信息的訪問入口,可以根據(jù)指定的配置名稱來(lái)獲取對(duì)應(yīng)的配置類。
編寫好了配置文件,我們?cè)趹?yīng)用主程序中創(chuàng)建 Flask 實(shí)例 app 時(shí),就可以使用后app.config.from_object()方法加載配置,
例如:
from settings import config_dict
app = Flask(__name__)
config_name = os.getenv('CONFIG_NAME', 'develop')
app.config.from_object(config_dict[config_name])
首先從配置文件中導(dǎo)入配置名稱和配置類的映射字典 config_dict,從環(huán)境變量 CONFIG_NAME 讀取配置名稱,然后通過app.config.from_object()方法加載指定配置信息,如果沒有讀取到 CONFIG_NAME,默認(rèn)使用 develop,對(duì)應(yīng)的配置類即 DevelopmentConfig。
Flask 支持多種方式加載配置信息,除了上述的從 Python 類中加載,還支持 從 JSON 文件中加載、從 py 文件中加載等,app.config類提供了不同的方法來(lái)加載不同格式的配置文件,還是比較靈活的。
到此這篇關(guān)于 Flask? ?使用類組織配置詳情的文章就介紹到這了,更多相關(guān) Flask? ?使用類組織配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
把vgg-face.mat權(quán)重遷移到pytorch模型示例
今天小編就為大家分享一篇把vgg-face.mat權(quán)重遷移到pytorch模型示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-12-12
Pytorch訓(xùn)練過程出現(xiàn)nan的解決方式
今天小編就為大家分享一篇Pytorch訓(xùn)練過程出現(xiàn)nan的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-01-01
Python 爬蟲實(shí)現(xiàn)增加播客訪問量的方法實(shí)現(xiàn)
這篇文章主要介紹了Python 爬蟲實(shí)現(xiàn)增加播客訪問量的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Python網(wǎng)絡(luò)編程 Python套接字編程
這篇文章主要為大家詳細(xì)介紹了Python網(wǎng)絡(luò)編程的相關(guān)資料,Python套接字編程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
Python利用keras接口實(shí)現(xiàn)深度神經(jīng)網(wǎng)絡(luò)回歸
這篇文章主要為大家詳細(xì)介紹了基于Python語(yǔ)言中TensorFlow的Keras接口,實(shí)現(xiàn)深度神經(jīng)網(wǎng)絡(luò)回歸的方法。文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-02-02
nx.adjacency_matrix計(jì)算鄰接矩陣與真實(shí)結(jié)果不一致的解決
這篇文章主要介紹了nx.adjacency_matrix計(jì)算鄰接矩陣與真實(shí)結(jié)果不一致的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
使用matlab 判斷兩個(gè)矩陣是否相等的實(shí)例
這篇文章主要介紹了使用matlab 判斷兩個(gè)矩陣是否相等的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-05-05
關(guān)于安裝halcon包pycharm提示不全的問題
很多小伙伴給小編反映在pycham上面安裝halcon對(duì)應(yīng)的安裝包之后,導(dǎo)入出現(xiàn)問題,發(fā)現(xiàn)輸入ha.read 沒有自動(dòng)提示 ,只有幾個(gè)變量和方法,怎么解決這個(gè)問題呢,下面小編給大家?guī)?lái)了安裝halcon包pycharm提示不全的問題,一起看看吧2021-06-06

