サーバーの動的アップグレードのための Python モジュールの再ロード
長時間実行されている Python サーバーが、サーバーの再起動のオーバーヘッドなしでサービスを更新する必要があるシナリオ、どうすればこれを達成できるのかという疑問が生じます。具体的には、モジュールをアンロードし、その後リロードしてモジュールに加えられた変更を反映するにはどうすればよいですか?
解決策: Importlib.reload() を使用する
Python 3.4 以降の場合importlib.reload() 関数は、インポート済みのモジュールを再ロードするためのソリューションを提供します。最初にインポートされたモジュールを引数として受け取り、最初のインポート以降の変更が組み込まれた再ロードされたモジュールを返します。
実装
プロセスを説明するには、 foo.py モジュールが変更された状況。リロード方法は次のとおりです。
from importlib import reload import foo while True: # Perform any necessary tasks if is_changed(foo): foo = reload(foo)
このアプローチにより、Django の開発サーバーがコード変更時に機能するのと同様に、サーバーを再起動せずにサービスをシームレスに更新できます。
技術
モジュールをリロードすることに注意することが重要です。
したがって、foo モジュールで Foo クラスのインスタンスが定義されている場合は、モジュールをリロードした後にインスタンスを再作成する必要があります。
以上がサーバーを再起動せずに Python モジュールをリロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。