> 백엔드 개발 > 파이썬 튜토리얼 > Dockerized Python 앱이 분리되어 실행될 때 출력이 표시되지 않는 이유는 무엇입니까?

Dockerized Python 앱이 분리되어 실행될 때 출력이 표시되지 않는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-29 12:36:10
원래의
786명이 탐색했습니다.

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 플래그는 버퍼링을 비활성화하여 즉각적인 출력 표시를 보장합니다.

버퍼링되지 않은 출력을 활성화하면 분리 실행 중에 컨테이너의 출력을 실시간으로 볼 수 있습니다.

위 내용은 Dockerized Python 앱이 분리되어 실행될 때 출력이 표시되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿