处理配置文件

先将事务归类,比如:

发邮件
from .base import Base

class Email(Base):
    """
    发送邮件提醒相关
    """
    def __init__(self):
        """
        邮箱相关数据初始化
        """
        self.username = 'asdf'
        self.pwd = 'asdf'

    def send(self,msg):
        pass
发短信
from .base import Base

class Msg(Base):
    """
    发送短信提醒相关
    """

    def __init__(self):
        """
        短信相关数据初始化
        """
        self.username = 'asdf'
        self.pwd = 'asdf'

    def send(self, msg):
        pass
发微信消息
from .base import Base

class WeChat(Base):

    def send(self,msg):
        pass

为了使类具有一定规范,另写一个类,作为标准,使继承它的类都要实现它里面的方法,比如:

class Base(object):

    def send(self,msg):
        raise NotImplementedError('...')

写入配置文件

MSG_LIST = [
    "utils.message.email.Email",
    "utils.message.msg.Msg",
    "utils.message.wechat.WeChat",
]

为了使配置文件生效,需在实现功能的所有类的同一目录下的__init__文件中写入

import settings
import importlib

def send_msgs(msg):

    for path in settings.MSG_LIST:
        m,c = path.rsplit('.',maxsplit=1)
        md = importlib.import_module(m)
        obj = getattr(md,c)()
        obj.send(msg)

在启动文件中写入

from flask import Flask,request
from utils import msg
from utils.message import send_msgs

app = Flask(__name__)

@app.route('/')
def index():
    data = request.args.get('val')
    if data == "xyy":
        send_msgs('.....')

    return 'Hello World!'


if __name__ == '__main__':
    app.run()

什么时候不想用哪一种方式发送消息了,在配置文件中注释掉就行

这样做遵循了一条规则:对代码封闭,对配置文件开发

 

posted @ 2018-03-21 16:08  星雨5213  阅读(104)  评论(0)    收藏  举报