1

Django アプリケーションは、ファイルから Python dict にデータをロードし、処理して、http 応答として送信します。ここで、Web サーバーで n 個のリクエストが受信されたとすると、この Django アプリはn何回も実行され、ファイルから Python dict にデータをロードしますnnhttp応答を提供できる間に、このデータをdictに1回だけロードできるかどうか疑問に思っていました。

問題状況のサンプルview.pyファイルは次のようになります。

from django.http import HttpResponse
from django.http import HttpRequest

def hello(request):
    data = open("abc").readlines()
    return HttpResponse(data[0])
4

3 に答える 3

4

辞書をグローバル名にバインドすると、Djangoプロジェクトが実行されている限り辞書が保持されます。各Djangoプロセス(mod_wsgiなどの一部のWSGIコンテナーは、アプリに対して複数のプロセスを実行できます)には、辞書の独自の独立したコピーがあることに注意してください。

于 2012-08-17T03:02:03.427 に答える
4

データがユーザーに関連している場合は、djanogのセッションフレームワークを使用して、リクエスト間でデータを永続化できます。データを多数のユーザー間で共有する必要がある場合は、キャッシュを使用できます。

于 2012-08-17T03:02:43.320 に答える
3

これはDjango Middlewareのジョブです。設定に追加すると、リクエスト全体で保持されます。永続化よりも優れたオプションであり、グローバルオブジェクトを使用するよりもはるかに優れています。

ミドルウェアは、Django の要求/応答処理へのフックのフレームワークです。これは、Django の入力や出力をグローバルに変更するための軽量で低レベルの「プラグイン」システムです。各ミドルウェア コンポーネントは、特定の機能を実行する責任があります。たとえば、Django には、HEAD 要求に対するすべての応答に「X-View」HTTP ヘッダーを追加するミドルウェア コンポーネント XViewMiddleware が含まれています。

于 2012-08-17T03:50:36.583 に答える