0

Djangoのクラスベースのビューには、見つけられない、簡単な解決策の問題が1つあります。Django 1.9クラスベースのビューシングルトン

のは、いくつかのクラスベースのビューを作成してみましょう:次に

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

このようなことに対する解決策は、機能ベースのものと同じように、クラスベースのビューと同じです。ビューの外側にある共有値をモジュールレベルで定義すると、プロセスごとに1回だけインスタンス化されます。

+0

この例へのリンクをお願いしますか? – isox

+0

追加で追加しました SHARED_DISPATCHERS = {} クラス定義の前。 – isox

関連する問題