programing

도커 파일에서 PYONUNBUFFERED의 용도는 무엇입니까?

telebox 2023. 8. 5. 10:05
반응형

도커 파일에서 PYONUNBUFFERED의 용도는 무엇입니까?

저는 제 장고 애플리케이션을 도커화하기 위한 튜토리얼을 보고 있었습니다.나는 우리가 왜 사용하는지 이해하지 못했습니다.PYTHONUNBUFFERED환경 변수로Dockerfile.

누가 설명해 줄 수 있나요?

설정PYTHONUNBUFFERED0과 다른 비어 있지 않은 값으로 파이썬 출력을 보장합니다.stdout그리고.stderr스트림은 처음에 버퍼링되지 않고 터미널(예: 컨테이너 로그)로 바로 전송되며 애플리케이션의 출력(예: 장고 로그)을 실시간으로 볼 수 있습니다.

이는 또한 python 애플리케이션이 충돌할 경우 버퍼 어딘가에 부분적인 출력이 저장되지 않고 절대 기록되지 않도록 보장합니다.

이는 여러 의견 및 보충 답변에서 언급되었으므로 참고하십시오.PYTHONUNBUFFERED입력에 전혀 영향을 미치지 않습니다(즉,stdin스트림).

즉, 도커 컨테이너에서 stdout/stderr로 버퍼링을 해제하는 것은 주로 실행 중인 응용 프로그램에서 가능한 한 빨리 컨테이너 로그에서 많은 정보를 얻고 충돌 시 아무것도 잃지 않는 것과 관련이 있습니다.

버퍼링을 해제하면 하드웨어/환경에 따라 성능에 영향을 미칠 수 있습니다.반면 대부분의 상황에서 이는 사소한 것이어야 합니다(단, 느린 디스크가 있거나 엄청난 양의 로그를 쓰는 중이거나 느린 네트워크 드라이브에 로그를 기록하도록 도커 데몬을 구성하는 것이 좋지 않은 경우는 제외).이러한 문제가 발생하면 버퍼링을 설정한 상태로 유지할 수 있으며 필요할 때 응용 프로그램에서 직접 버퍼를 플러시할 수 있습니다.이 주제에 대한 아래 링크 [4]를 참조하십시오.

참조:

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

반응형