PYTHONUNBUFFERED
Django アプリケーションを Docker 化するチュートリアルを見ていました。で を環境変数として使用する理由がわかりませんDockerfile
。
誰か説明できますか?
ベストアンサー1
PYTHONUNBUFFERED
0 以外の空でない値に設定すると、Python 出力、stdout
つまりstderr
ストリームが最初にバッファリングされることなくターミナル (コンテナ ログなど) に直接送信され、アプリケーションの出力 (Django ログなど) をリアルタイムで確認できるようになります。
これにより、Python アプリケーションがクラッシュした場合に、部分的な出力がどこかのバッファに保持され、書き込まれることがなくなります。
これはいくつかのコメントや補足回答で言及されているので、PYTHONUNBUFFERED
入力(つまりstdin
ストリーム)にはまったく影響がないことに注意してください。
言い換えると、Docker コンテナで stdout/stderr へのバッファリングをオフにするのは、主に、実行中のアプリケーションからできるだけ多くの情報をコンテナ ログにできるだけ早く取得し、クラッシュが発生した場合に何も失わないようにするためです。
バッファリングをオフにすると、ハードウェア/環境によってはパフォーマンスに影響が出る可能性があることに注意してください。ただし、ほとんどの状況では影響は軽微です (低速ディスクを使用している場合や、膨大な量のログを書き込んでいる場合、または低速ネットワーク ドライブにログを書き込むように Docker デーモンを設定するという誤った考えを持っている場合を除きます)。これが懸念される場合は、バッファリングをオンのままにしておき、必要に応じてアプリケーションから直接バッファをフラッシュすることができます。この件については、以下のリンク [4] を参照してください。
参考文献: