flask原始碼分析 配置檔案 四

2021-09-20 04:20:19 字數 2791 閱讀 4924

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。當出...