0

在Django中,基于类的视图存在一个问题,那就是我找不到和简单的解决方案。Django 1.9基于类的视图singleton

让我们来创建一些基于类的观点:

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

我可以问你的例子链接吗? – isox

+0

已解决 SHARED_DISPATCHERS = {} 在课堂定义之前。 – isox

相关问题