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