django开发-单例设计模式的使用

今天总结一下单例设计模式在django开发中的几个应用点。

1.单例模式应用于logging模块:
之前一篇文章中介绍过logging模块,这里就不再说了。打印日志时,logging模块还是很好用的。
单例设计模型应用于logging中的代码如下:


utils/SingletonLogger/SingletonLogger.py:

import logging


class SingletonLogger(object):
    __instance = None

    def __init__(self, level):
        # 设置日志级别
        self.level = level

    def __new__(cls, *args, **kwargs):
        if not cls.__instance:
            cls.__instance = object.__new__(cls)
            cls.__instance.logger = logging.getLogger(__name__)
        return cls.__instance

    def get_logger(self):
        self.logger.setLevel(self.level)
        return self.logger

需要在views.py中使用时,导入即可


from utils.SingletonLogger import SingletonLogger
logger = SingletonLogger("INFO").get_logger()

当django项目启动后,在每个app的views.py中导入的logger都是同一个对象,这样就避免了在内存中多次创建Logger对象。

2.单例模式应用于redis模块:
……