Computer Science/Python

[Python] gunicorn 모듈로 flask로 개발한 api 서버 기동하기

Taewon Heo 2022. 9. 19. 18:50

Flask로 웹서버를 임시로 기동하면

WARNING : This is a development server. Do not use it in a production deployment.

Use a production WSGI server instead.

라는 문구를 볼 수 있다.

 

개발환경과 같이 단 건의 요청을 처리하는데는 flask를 써도 상관없지만

상용과 같이 high load 환경에서 flask는 분산처리가 제대로 되지 않아 요청을 처리하는데 실패하거나, 처리가 지연돼서 read timeout이 발생하기 쉽다.

 

이러한 문제를 해결하기 위해 nginx와 WSGI 서버를 사용하는 것이 정석이다.

나의 경우 API 서버라서 nginx를 사용하지 않고 WSGI 서버만 사용하고싶었다.

 

다른 출처에서는 gunicorn으로 flask의 app.py를 한번 더 감싸는 방법을 소개하는데,

flask의 app.py를 gunicorn 모듈로 실행하는 방법도 있다.

명령어는 

gunicorn --workers=1 --threads=4 --bind 0:5000 --timeout=0 file_name:app

이고, 

nohup 명령어를 이용해서 백그라운드로 실행할 수도 있다.