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。
所以问题是 - 如何制作视图类单例?不是每个请求都要初始化?
答案 0 :(得分:1)
这种事情的解决方案与基于类的视图相同,与基于函数的视图一样。在模块级别定义视图外部的共享值,因此每个进程只会实例化一次。