全部文章
CMDB开发指北——设计概要
CMDB开发指北——数据采集之兼容配置(一)
CMDB开发指北——API之(一)
CMDB开发指北——后台管理之(一)
概要
有这么一个场景,某些配置需要用户定义,某些配置需要预先设置,用户的配置可以覆盖默认配置,要想实现这个功能,就要引入反射机制。
一、创建相关文件
- 程序运行文件
- 用户配置文件
- 配置整合文件
- 预配置文件
备注:3负责整合2和4中的配置
二、start.py主程序设计
# -*- 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程序设计
# -*- coding: utf-8 -*-
from lib.conf import global_settings
import importlib
import os
class Settings(object):
def __init__(self):
#默认的配置
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
四、配置文件内容示例
其中settings.py
# -*- coding: utf-8 -*-
__date__ = '2018/1/14 下午4:32'
USER = "Mangood"
PASSWD = "abc123"
PASSwd = "123456"
其中global_settings.py
# -*- coding: utf-8 -*-
EMAIL = "cloudbye@163.com"