장고에서 프린트문 바로 출력되게 하기

2025년 1월 16일 목요일

Today I Learned

날짜

2025년 1월 16일 목요일

내용

장고에서 프린트문 바로 출력하기

장고에선 아주 특이한 현상이 있다. 개발 과정에서 프린트문을 찍어도 바로 출력이 안된다! 개발의 최 핵심 기능인데… 버퍼에 들어갔다 나와서 그런지, 괜히 코드 저장버튼을 눌러서 도커 컨테이너가 리프레쉬 되야 출력된다. 디버깅 모드는 너무 설정하기 번거롭고… 간단하게 하는 방법을 찾아냈다.

방법 1

print("출력!", flush= True) 를 사용하자. 버퍼에 쌓이지 않고 즉시 출력된다.

방법 2

프린트문을 찍을 때마다 저 옵션을 넣어줄 순 없다. 도커파일에 잠깐 손을대자.

1
2
3
4
5
6
7
8
9
...

# 이걸 추가해주자 
ENV PYTHONUNBUFFERED=1

... 

CMD ["gunicorn", "core.asgi:application", "--bind", "0.0.0.0:80", "-k", "uvicorn.workers.UvicornWorker", "--workers", "4"]

CMD 전에 이걸 넣어주자. 그럼 매 프린트문마다 flush를 넣지 않아도 잘 출력된다.

회고

커밋할 때 신경써야 할 게 하나 늘어버렸다.