zoukankan      html  css  js  c++  java
  • 在可插拔settings的基础上加入类似中间件的设计

    在可插拔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,"大家好")
    
  • 相关阅读:
    Run Shell Commands in Python
    Install Fabric 1.8.3 Manually on Ubuntu 12.04
    Setup a Simple HTTP Proxy Server
    去掉文件中的^M
    Build Web Server with Apache and Passenger
    Delete Trailing Spaces with Vim
    Specify Default JDK on Ubuntu
    总结
    问题
    HTTPS 和 HTTP
  • 原文地址:https://www.cnblogs.com/zx125/p/11774724.html
Copyright © 2011-2022 走看看