拡張 Python サーバーを実行している場合、モジュールを再ロードすると、サーバーを再起動せずにサービスをアップグレードできます。これを達成する際の一般的な問題の 1 つは、リロードする前に古いモジュールを効率的にアンロードすることです。
Python には、組み込み関数 importlib.reload() が用意されています。 、モジュールのリロード用に特別に設計されています。これは、特に Python 3.4 以降の場合に効果的なソリューションです。
from importlib import reload # Python 3.4+ import foo while True: # Do some operations. if is_changed(foo): foo = reload(foo)
以前の Python 2 では、リロードは組み込みでした。 Python 3 では、imp モジュールに移動されました。ただし、3.4 では、imp は非推奨になり、importlib が優先されました。したがって、Python 3 以降を対象とする場合は、reload を呼び出すときに適切なモジュールを参照するか、インポートします。
Django の開発サーバーなどのさまざまな Web サーバーは、このメソッドを利用して動的を有効にします。サーバープロセスを再起動せずに更新します。モジュールレベルのコードのみが再実行され、拡張モジュールの init 関数は変更されないことに注意してください。また、古いオブジェクトは参照カウントがゼロになった場合にのみ再利用されることに注意してください。
特定のシナリオでは、Foo クラスが foo モジュールで定義されている場合、リロード後に Foo オブジェクトを再作成する必要があります。モジュール。
以上がサーバーを再起動せずに、サーバーレス アップグレード用の Python モジュールを効率的にリロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。