ホームページ > バックエンド開発 > Python チュートリアル > Docker 化された Python アプリを切り離して実行すると出力が表示されないのはなぜですか?

Docker 化された Python アプリを切り離して実行すると出力が表示されないのはなぜですか?

Patricia Arquette
リリース: 2024-11-29 12:36:10
オリジナル
785 人が閲覧しました

Why Do My Dockerized Python Apps Show No Output When Run Detached?

Docker 化された Python アプリ: 分離された実行で出力がないのはなぜですか?

バックグラウンド

Docker コンテナーで Python スクリプトを実行するとき、出力の動作は、コンテナーが対話型で実行されるか切り離されて実行されるかによって異なる場合があります。 mode.

問題

分離モード (-d フラグ) では、コンテナーが正常に実行されているように見えても、Python スクリプトは出力を出力しないことがあります。この問題は、Dockerfile 内の CMD ["python", "main.py"] で開始された Python (バージョン 2.7) アプリに影響します。

原因

問題の原因は次のとおりです。 Python のデフォルトのバッファ出力動作。デタッチ状態で実行している場合、コンテナーの出力バッファーは自動的にフラッシュされないため、特定のしきい値に達するまで蓄積されます。これにより、切り離し中に出力が表示されなくなります。

解決策

この問題を解決するには、バッファなし出力 (-u フラグ) を使用します。

CMD ["python", "-u", "main.py"]
ログイン後にコピー

これにより、stdout と stderr が強制的にバッファリングされなくなり、出力をデタッチされた状態ですぐに表示できるようになります。

説明

  • バッファリングされた出力: デフォルトでは、Python は stdout と stderr をフラッシュする前にバッファリングします。
  • 分離モード: 分離モードでは、これはコンテナは出力についてアクティブに監視されていないため、バッファリングにより即時出力が防止されます。
  • バッファなし出力: -u フラグはバッファリングを無効にし、即時出力表示を保証します。

バッファなし出力を有効にすることで、切り離された実行中にコンテナの出力をリアルタイムで表示できます。

以上がDocker 化された Python アプリを切り離して実行すると出力が表示されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート