私は大きな配列を持っています.Djangoを起動して読み込み専用のグローバル変数として扱うときは、一度だけ読み込みたいと思います。その配列の初期化のためのコードを置くのに最適な場所は何ですか?Djangoの初期化
settings.pyに入れると、設定モジュールをインポートするたびに再初期化されますが、正しいですか?
私は大きな配列を持っています.Djangoを起動して読み込み専用のグローバル変数として扱うときは、一度だけ読み込みたいと思います。その配列の初期化のためのコードを置くのに最適な場所は何ですか?Djangoの初期化
settings.pyに入れると、設定モジュールをインポートするたびに再初期化されますが、正しいですか?
settings.pyはそのための適切な場所です。 Settings.pyは他のモジュールと同じように一度だけ読み込まれます。モジュールがプロセスごとに一度インポートされなければならないという問題がまだ残っています。そのため、Webサーバーの再作成スタイル(Apacheなど)は問題のインスタンスごとに一度リロードします。 mod_pythonの場合、これはプロセスごとに1回です。 mod_wsgiの場合は、再起動が必要な場合を除き、これはたった1回である可能性があります。
tl;複数のインポート文が使用されても、drモジュールは一度インポートされます。 settings.pyに入れてください
settings.pyはDjangoの設定です。そこに独自の設定を入れても構いませんが、それを任意の非構成データ構造に使用するのは良い方法ではありません。
論理的に属するモジュールに入れるだけで、インスタンスごとに1回だけ実行されます。モジュールが起動時にロードされ、後で最初に使用されたときにロードされないようにするには、そのモジュールをトップレベルの__init__.py
からインポートして、強制的にロードさせます。
これは受け入れられる回答でなければなりません –
しかし、その初期化コード__init__.pyがいくつかの設定に依存する場合はどうでしょうか? –
mod_wsgiでは、そのDjangoインスタンスのプロセスごとに1回だけです。埋め込みモードとデーモンモードのどちらを使用しているか、したがってDjangoインスタンスが実行されているプロセスの数によって決定されるプロセスの数。 mod_wsgiのさまざまな動作モードの詳細については、「http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading」を参照してください。 –
settings.pyで初期化を行うと、しばしば循環インポートの問題が発生します。私はこれを何度も苦労しており、循環輸入についてこれを心配する人には警告します。 –