全部文章
CMDB開(kāi)發(fā)指北——設(shè)計(jì)概要
CMDB開(kāi)發(fā)指北——數(shù)據(jù)采集之兼容配置(一)
CMDB開(kāi)發(fā)指北——API之(一)
CMDB開(kāi)發(fā)指北——后臺(tái)管理之(一)
概要
有這么一個(gè)場(chǎng)景理疙,某些配置需要用戶定義沫勿,某些配置需要預(yù)先設(shè)置许饿,用戶的配置可以覆蓋默認(rèn)配置库倘,要想實(shí)現(xiàn)這個(gè)功能,就要引入反射機(jī)制孤个。
一剃允、創(chuàng)建相關(guān)文件
- 程序運(yùn)行文件
- 用戶配置文件
- 配置整合文件
- 預(yù)配置文件
備注:3負(fù)責(zé)整合2和4中的配置
二、start.py主程序設(shè)計(jì)
# -*- coding: utf-8 -*-
__date__ = '2018/1/14 下午4:33'
import os
os.environ['USER_SETTINGS'] = 'config.settings'
from lib.conf.config import settings
print(settings.EMAIL)
print(settings.USER)
三齐鲤、整合配置文件config.py程序設(shè)計(jì)
# -*- coding: utf-8 -*-
from lib.conf import global_settings
import importlib
import os
class Settings(object):
def __init__(self):
#默認(rèn)的配置
for key in dir(global_settings):
if key.isupper():
value = getattr(global_settings, key)
setattr(self, key, value)
#用戶的配置
user_settings = os.environ.get("USER_SETTINGS")
if not user_settings:
return
m = importlib.import_module(user_settings)
for key in dir(m):
if key.isupper():
value = getattr(m, key)
setattr(self, key, value)
settings = Settings()
其中settings.py
四斥废、配置文件內(nèi)容示例
其中settings.py
# -*- coding: utf-8 -*-
__date__ = '2018/1/14 下午4:32'
USER = "Mangood"
PASSWD = "abc123"
PASSwd = "123456"
其中g(shù)lobal_settings.py
# -*- coding: utf-8 -*-
EMAIL = "cloudbye@163.com"