2017-01-01 13 views
0

私のDjangoプロジェクトでは、すべてのアプリユーザーに対して操作を実行するミドルウェアを作成しました。私はミドルウェアモジュールの先頭に次のように記述した場合、その応答時間の風船アップ気づいたミドルウェア内のDjango設定モジュールの値を設定する際の応答時間が高い

import os 
os.environ.setdefault("DJANGO_SETTINGS_MODULE","myproject.settings") 

を、私はこれらの行を省略した場合、それはおよそ10倍以下です。初心者である私は、それぞれの応答時間の間にこのような大きな差がある理由を明確にしようとしています。専門家は説明することができますか?あなたは以前のようなものを見たことがありますか?


p.s.ミドルウェア内のDjango設定の環境変数を変更しない理由はすでに分かっていますので、心配しないでください。

答えて

1

理由は、サーバースレッド/プロセスごとに1回ではなく(つまり、データベース、キャッシュなどに再インスタンス化/接続するなど)、djangoがすべての要求に対して設定を再ロードする必要があります。これをプロファイリングで確認する必要があります。この動作は、実行しているアプリケーションサーバーによって異なる可能性があります。

このレベルのコントロールを実際に設定したい場合は、この行をmanage.py,などに追加することや、アプリケーションサーバーの起動に使用するファイル/スクリプトを追加する方が簡単です。

P.S.あなたがそれをしてはならないことをすでに知っているなら、なぜそれをやっていますか?

+0

最近私のミドルウェアから除外されました。それから、全体的なサーバーの応答時間も低下していることに気付きました。 p.s.私はリバースプロキシとしてnginxでgunicornを実行しています。 –

関連する問題