分離的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中文網其他相關文章!