首頁 >後端開發 >Python教學 >為什麼我的 Dockerized Python 應用程式在分離運行時不顯示任何輸出?

為什麼我的 Dockerized Python 應用程式在分離運行時不顯示任何輸出?

Patricia Arquette
Patricia Arquette原創
2024-11-29 12:36:10784瀏覽

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

Docker 化的 Python 應用:為什麼沒有分離執行的輸出?

背景

在Docker 容器中執行Python 腳本時,輸出行為可能會有所不同,取決於容器是以互動方式運作還是以分離方式執行

問題

在分離模式(-d標誌)下,Python 腳本可能不會列印任何輸出,即使容器看起來正常運作。此問題影響在 Dockerfile 中使用 CMD ["python", "main.py"] 啟動的 Python(版本 2.7)應用程式。

原因

問題源自於Python 的預設緩衝輸出行為。當分離運行時,容器的輸出緩衝區不會自動刷新,因此它們會累積直到達到某個閾值。這會導致分離期間缺少可見輸出。

要解決此問題,請使用無緩衝輸出(-u 標誌):

CMD ["python", "-u", "main.py"]

這會強制stdout 和stderr不被緩衝,從而允許輸出立即以分離的方式顯示

說明

  • 緩衝輸出:預設情況下,Python 在刷新stdout 和stderr 之前緩衝它們。
  • 分離模式: 在分離模式下,此緩衝阻止立即輸出,因為容器沒有主動監視輸出。
  • 無緩衝輸出: -u 標誌停用緩衝,確保即時輸出顯示。

透過啟用無緩衝輸出,可以在分離執行期間即時查看容器的輸出。

以上是為什麼我的 Dockerized Python 應用程式在分離運行時不顯示任何輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn