Django 1.9基于类的视图单例

时间:2016-05-15 10:59:19

标签: python django mongodb django-class-based-views class-based-views

Django中基于类的视图存在一个我无法找到并且易于解决的问题。

让我们创建一些基于类的视图:

class userspaceDispatcher(View):
    def __init__(self,*args, **kwargs):
        super().__init__(*args, **kwargs)
        self.someSharedStuff = MongoConnector() # As example

    def dispatch(self, request, *args, **kwargs):
        # Some code here, it does not matter
        return dispatchResult

然后,当我们进行HTTP调用时,会传递给我的视图,每次都会创建新的userspaceDispatcher实例。 例如,要处理请求,我需要MongoDB连接器。正如我在分析器上看到的那样,连接器的初始化需要5-7ms。

所以问题是 - 如何制作视图类单例?不是每个请求都要初始化?

1 个答案:

答案 0 :(得分:1)

这种事情的解决方案与基于类的视图相同,与基于函数的视图一样。在模块级别定义视图外部的共享值,因此每个进程只会实例化一次。