class
flask
(_packageboundobject)
: config_class = config # 配置由誰來載入配置
default_config = immutabledict(
)#flask定義了一些預設配置,如果自己不配則使用default
def__init__
(self)
:# 這個物件可像操作字典一樣去操作
self.config = self.make_config(instance_relative_config)
defmake_config
(self, instance_relative=
false):
# instance_relative意思是可以不從專案根路徑讀取配置,可自己指定
root_path = self.root_path
if instance_relative:
root_path = self.instance_path
defaults =
dict
(self.default_config)
# #獲取預設配置
defaults[
'env'
]= get_env(
)#獲取環境
defaults[
'debug'
]= get_debug_flag(
)# 將根路徑和預設配置傳入config,返回乙個配置物件,
# 現在我們就可以通過self.config,在任何地方讀取配置了
# 現在看一下這個config類是什麼???
return self.config_class(root_path, defaults)
class
config
(dict):
''' 繼承自字典
'''def__init__
(self, root_path, defaults=
none):
dict
.__init__(self, defaults or
) self.root_path = root_path
# 從環境變數載入
deffrom_envvar
(self, variable_name, silent=
false):
pass
# 從py檔案載入
deffrom_pyfile
(self, filename, silent=
false):
pass
# 從乙個物件,或者字串物件中載入
'請實現本方法'
)
#mail.py
from message.base import base
class
mail
(base)
:def
send
(self, msg)
:print
("mail"
)
#wechat.py
from message.base import base
class
wechat
(base)
:def
send
(self, msg)
:print
("wechat"
)
#config.py
send_server =
['message.mail.mail'
,'message.wechat.wechat'
,]
#__init__.py
import config
import importlib
defsend
(msg)
:for path in config.send_server:
m, c = path.rsplit(
'.', maxsplit=1)
model = importlib.import_module(m)
obj =
getattr
(model, c)()
obj.send(msg)
#main.py
from message import send
send(
'hello world'
)
flask 配置檔案的原始碼分析
原始碼分析 第1步 class flask packageboundobject self.config self.make config instance relative config 第2步 def make config self,instance relative false return...
原始碼解析Flask的配置檔案
在flask裡,我們常在主檔案中定義某些配置,比如 實際上,flask中預設可以進行可選的配置項有很多。如果在開發的過程中,把所有需要的配置項都定義在主檔案中,就會造成整個程式的目錄結構不合理,如果需要重寫的flask配置項很多的時候,就可以把配置項用別的方式進行定義,然後匯入使用flask的配置檔...
MySQL原始碼分析(3) 配置檔案詳解
配置檔案詳解 關於配置檔案存放位置和優先順序 在一次部署中,我們發現mysql沒有按照配置檔案中的innodb data path選項建立檔案,查詢後發現這台機器上有多個配置檔案 etc my.cnf和 etc mysql my.cnf,而mysql會優先讀取 etc mysql my.cnf。當出...