docker ファイルでの PYTHONUNBUFFERED の使用法は何ですか? 質問する

docker ファイルでの PYTHONUNBUFFERED の使用法は何ですか? 質問する

PYTHONUNBUFFEREDDjango アプリケーションを Docker 化するチュートリアルを見ていました。で を環境変数として使用する理由がわかりませんDockerfile

誰か説明できますか?

ベストアンサー1

PYTHONUNBUFFERED0 以外の空でない値に設定すると、Python 出力、stdoutつまりstderrストリームが最初にバッファリングされることなくターミナル (コンテナ ログなど) に直接送信され、アプリケーションの出力 (Django ログなど) をリアルタイムで確認できるようになります。

これにより、Python アプリケーションがクラッシュした場合に、部分的な出力がどこかのバッファに保持され、書き込まれることがなくなります。

これはいくつかのコメントや補足回答で言及されているので、PYTHONUNBUFFERED入力(つまりstdinストリーム)にはまったく影響がないことに注意してください。

言い換えると、Docker コンテナで stdout/stderr へのバッファリングをオフにするのは、主に、実行中のアプリケーションからできるだけ多くの情報をコンテナ ログにできるだけ早く取得し、クラッシュが発生した場合に何も失わないようにするためです。

バッファリングをオフにすると、ハードウェア/環境によってはパフォーマンスに影響が出る可能性があることに注意してください。ただし、ほとんどの状況では影響は軽微です (低速ディスクを使用している場合や、膨大な量のログを書き込んでいる場合、または低速ネットワーク ドライブにログを書き込むように Docker デーモンを設定するという誤った考えを持っている場合を除きます)。これが懸念される場合は、バッファリングをオンのままにしておき、必要に応じてアプリケーションから直接バッファをフラッシュすることができます。この件については、以下のリンク [4] を参照してください。

参考文献:

おすすめ記事