在可插拔settings的基础上加入类似中间件的设计
settings可插拔设计可以看之前的文章
https://www.cnblogs.com/zx125/p/11735505.html
设计思路
实现和Django中间件类似的功能,可以在settings中通过简单的添加和删除配置就能,操作中间件是否执行的功能
文件目录
--about_settings
--default
--conf
--__init__.py
--global_settings.py 默认配置文件
--notify
--__init__.py
--email.py
--msg.py
--wechat.py
--user
--settings.py 用户配置文件
--start.py 启动文件
__init__.py
import importlib
def send_all(settings,content):
for module_path in settings.NOTIFY_LIST:#遍历配置里面的字符串
module, class_name = module_path.rsplit('.',maxsplit=1)#切割出包,和类名
mod = importlib.import_module(module)#获取模块对象
cls_obj = getattr(mod,class_name)#反射获取类对象
cls_obj().send(content)#实例化对象,并执行指定方法
email,msg,wechat
鸭子类型,多个类有共同的方法
class Email():
def __init__(self):
pass
def send(self,content):
print(content)
class Msg():
def __init__(self):
pass
def send(self,content):
print(content)
class Msg():
def __init__(self):
pass
def send(self,content):
print(content)
start.py
import os
import sys
import notify
BASE_DIR = os.path.dirname(__file__)
sys.path.append(BASE_DIR)
os.environ.setdefault('settings','user.settings')
from default.conf import settings
notify.send_all(settings,"大家好")