首頁 >後端開發 >Python教學 >為什麼我的分離 Docker 容器的 Python 輸出遺失,如何修復它?

為什麼我的分離 Docker 容器的 Python 輸出遺失,如何修復它?

Barbara Streisand
Barbara Streisand原創
2024-11-24 07:08:12514瀏覽

Why is my detached Docker container's Python output missing, and how can I fix it?

分離的Python 容器:用於日誌記錄的無緩衝輸出

使用-d 標誌在分離的Docker 容器中運行Python 應用程式時,您可以遇到容器輸出不足的情況。儘管容器似乎正在運行,但應用程式的預期列印語句在日誌中或透過附加的終端會話不可見。

問題在於 Python 列印函數的行為。預設情況下,Python 會緩衝其輸出以提高效能。此緩衝在互動式 shell 中不會立即可見,一旦遇到換行符,就會列印輸出。

在分離容器中運行時,應用程式的輸出會被緩衝,並且可能不會立即刷新。要解決此問題,請透過在Dockerfile 的CMD 中向Python 命令新增-u 標誌來使用無緩衝輸出:

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

透過使用無緩衝輸出,Python 的stdout 和stderr 串流會立即刷新,從而允許捕獲日誌列印語句。然後,您可以透過以下方式查看輸出:

docker logs myapp

注意:

-u 標誌強制無緩衝輸出,這在某些情況下可能會降低性能。如果您喜歡手動控制輸出緩衝行為,請考慮使用日誌記錄模組或實作您自己的緩衝解決方案。

以上是為什麼我的分離 Docker 容器的 Python 輸出遺失,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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