분리된 Python 컨테이너: 로깅을 위한 버퍼링되지 않은 출력
-d 플래그를 사용하여 분리된 Docker 컨테이너에서 Python 애플리케이션을 실행할 때 다음이 발생할 수 있습니다. 컨테이너의 출력이 부족합니다. 컨테이너가 실행 중인 것처럼 보이지만 애플리케이션에서 예상되는 인쇄 문은 로그나 연결된 터미널 세션을 통해 표시되지 않습니다.
문제는 Python의 인쇄 기능 동작에 있습니다. 기본적으로 Python은 성능을 향상시키기 위해 출력을 버퍼링합니다. 이 버퍼링은 개행 문자가 발견되는 즉시 출력이 인쇄되는 대화형 셸에서는 즉시 표시되지 않습니다.
분리된 컨테이너에서 실행하면 애플리케이션의 출력이 버퍼링되며 즉시 플러시되지 않을 수 있습니다. 이 문제를 해결하려면 Dockerfile의 CMD에서 Python 명령에 -u 플래그를 추가하여 버퍼링되지 않은 출력을 사용하세요.
CMD ["python", "-u", "main.py"]
버퍼링되지 않은 출력을 사용하면 Python의 stdout 및 stderr 스트림이 즉시 플러시되어 로그를 캡처할 수 있습니다. 인쇄문. 그런 다음 다음을 통해 출력을 볼 수 있습니다.
docker logs myapp
참고:
-u 플래그는 버퍼링되지 않은 출력을 강제하므로 경우에 따라 성능이 저하될 수 있습니다. 출력 버퍼링 동작을 수동으로 제어하려면 로깅 모듈을 사용하거나 자체 버퍼링 솔루션을 구현하는 것이 좋습니다.
위 내용은 분리된 Docker 컨테이너의 Python 출력이 누락되는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!