본문 바로가기

DevOps/쿠버네티스(Kubernetes)

[쿠버네티스 #tip2] 파이썬으로 만든 컨테이너에서 print출력이 되지 않을 때

728x90

파이썬 flask를 활용해 웹서버를 구축할 때 생긴 오류였다.

 

진행하고 있던 내용은 외부의 DB에서 데이터를 쿠버네티스 클러스터 내의 웹서버에 보내고 이 웹서버가 다시 쿠버네티스 클러스터 내의 DB로 저장하는 상황이었는데

 

데이터를 넘겨주는 과정에서 잘 넘어가는지 확인하기 위해 pod에 접근했었다.

 

근데 로컬에서 잘만되던 코드가 클러스터에 올려놓으니까 거짓말처럼 되지가 않았다.

 

DNS 서비스에 문제가 있나 싶어 coredns도 확인해봤고

 

pod의 로그를 확인해봐도 rest api가 잘 성공했다는 200코드만 뜰 뿐 data에 대한 print문이 출력되지 않았다. 

 

그 이후 수많은 구글링을 시도했고

 

결국 인프런 쿠버네티스강사님에게 질문을 했었다.

 

문제는 python에 있었고 print할 때 해당 코드를 flush하라는 내용이었다.

 

flush : 기본값이 false, print 시에 즉시 스트림을 출력함으로써 버퍼의 텍스트를 비우는 권한을 갖게함.

 

 

print("Hello world!")

해당 코드를

print("Hello world!", flush=True)

이런식으로 바꿔주니 원할하게 수행되었다.

 

실행되는 이유는 아직도 모르겠다. 나처럼 파이썬 출력 관련해서 문제가 생기는 분들에게 도움이 되었으면 좋겠다.

 

 

반응형