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