ホームページ  >  記事  >  バックエンド開発  >  Django サーバーの起動時に初期化コードを 1 回だけ実行するにはどうすればよいですか?

Django サーバーの起動時に初期化コードを 1 回だけ実行するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-03 19:52:03709ブラウズ

How to Execute Initialization Code Only Once During Django Server Startup?

起動時の Django での初期化コードの実行

Django では、起動時にコードを 1 回だけ実行することが一般的な要件となる場合があります。その後のリクエストではなく、最初のサーバー起動時にのみコードが実行されることを保証するソリューションを検討してみましょう。

当初、リンクされた質問で提案されたソリューションでは、ターミナルで「Hello world」メッセージが 2 回発生しました。問題は、ミドルウェアの実行を終了するために MiddlewareNotused 例外を使用することにあります。

Django 1.7 以降、この問題に対処するために専用のフックが導入されました。アプリの AppConfig クラスの Ready メソッドをオーバーライドすることで、起動専用コードを指定できます。このアプローチは、ミドルウェアを使用するよりもクリーンで明示的です。

バージョン 1.7 より前の Django の場合、INSTALLED_APPS の 1 つの __init__.py ファイルにスタートアップ コードを配置することが効果的であることが証明されています。このコードは、アプリケーションが最初にロードされるときに実行され、確実に 1 回だけ実行されます。

このアプローチのコード配置の例を次に示します。

# myapp/__init__.py
import your_module

your_module.initializer()

いつ実行されるかに注意してください。 ./manage.py runserver コマンドを使用すると、内部サーバー検証プロセスにより初期化コードが 2 回実行される可能性があります。ただし、一般的な展開シナリオまたは runserver による自動リロード中、コードは 1 回だけ実行されます。

以上がDjango サーバーの起動時に初期化コードを 1 回だけ実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。