도커 파일에서 PYONUNBUFFERED의 용도는 무엇입니까?
저는 제 장고 애플리케이션을 도커화하기 위한 튜토리얼을 보고 있었습니다.나는 우리가 왜 사용하는지 이해하지 못했습니다.PYTHONUNBUFFERED
환경 변수로Dockerfile
.
누가 설명해 줄 수 있나요?
설정PYTHONUNBUFFERED
0과 다른 비어 있지 않은 값으로 파이썬 출력을 보장합니다.stdout
그리고.stderr
스트림은 처음에 버퍼링되지 않고 터미널(예: 컨테이너 로그)로 바로 전송되며 애플리케이션의 출력(예: 장고 로그)을 실시간으로 볼 수 있습니다.
이는 또한 python 애플리케이션이 충돌할 경우 버퍼 어딘가에 부분적인 출력이 저장되지 않고 절대 기록되지 않도록 보장합니다.
이는 여러 의견 및 보충 답변에서 언급되었으므로 참고하십시오.PYTHONUNBUFFERED
입력에 전혀 영향을 미치지 않습니다(즉,stdin
스트림).
즉, 도커 컨테이너에서 stdout/stderr로 버퍼링을 해제하는 것은 주로 실행 중인 응용 프로그램에서 가능한 한 빨리 컨테이너 로그에서 많은 정보를 얻고 충돌 시 아무것도 잃지 않는 것과 관련이 있습니다.
버퍼링을 해제하면 하드웨어/환경에 따라 성능에 영향을 미칠 수 있습니다.반면 대부분의 상황에서 이는 사소한 것이어야 합니다(단, 느린 디스크가 있거나 엄청난 양의 로그를 쓰는 중이거나 느린 네트워크 드라이브에 로그를 기록하도록 도커 데몬을 구성하는 것이 좋지 않은 경우는 제외).이러한 문제가 발생하면 버퍼링을 설정한 상태로 유지할 수 있으며 필요할 때 응용 프로그램에서 직접 버퍼를 플러시할 수 있습니다.이 주제에 대한 아래 링크 [4]를 참조하십시오.
참조:
- [1] https://docs.python.org/3/using/cmdline.html#envvar-PYTHONUNBUFFERED
- https://alphacoder.xyz/comerizing-django/
- [3] https://towardsdatascience.com/how-to-contain-your-first-django-in-docker-and-access-it-from-aws-fdb0081bdf1d
- [4] https://github.com/aws/amazon-sagemaker-examples/issues/319
A PYTHONUNBUFFERED
비어 있지 않은 값을 지정하면 stdout 및 stderr 스트림이 강제로 버퍼링되지 않습니다.이 옵션은 stdin 스트림에 영향을 주지 않습니다.
이 명령은 Python을 UBUFFERED 모드로 실행하도록 지시하며, 이는 Docker 컨테이너 내에서 Python을 사용할 때 권장됩니다.그 이유는 Python이 출력을 버퍼링할 수 없기 때문입니다. 대신 Python 응용 프로그램을 실행할 때 도커 이미지의 일부 복잡성을 피하면서 출력을 직접 인쇄합니다.
언급URL : https://stackoverflow.com/questions/59812009/what-is-the-use-of-pythonunbuffered-in-docker-file
'programing' 카테고리의 다른 글
babel-polyfill 라이브러리는 어떻게 설치합니까? (0) | 2023.08.10 |
---|---|
PowerShell에서 사용자 지정 기능 로드 (0) | 2023.08.10 |
Python에서 클래스 속성 캐싱 (0) | 2023.08.05 |
통합 터미널 및 작업에 대해 Visual Studio Code가 갑자기 PowerShell로 기본 설정됨 (0) | 2023.08.05 |
그룹 SQL별 실행 총계(Oracle) (0) | 2023.08.05 |