✍️ 글쓰기/💻 배우고

2-2. WSGI 서버 Gunicorn 사용하기 | React, Flask, GraphQL

ddubimoon 2022. 4. 21. 06:51

 React + Flask + GraphQL 웹 어플리케이션 프로젝트 전체 로드맵

 

React & Flask & GraphQL 웹앱 프로젝트 시작 🏁

이번에 리액트와 플라스크를 활용해 프로젝트를 할 기회가 생겼다. 거기에 GraphQL API에서 필요한 데이터들을 CRUD 해야 했는데, 이런 조합의 프로젝트 예시를 찾아보는 것이 쉽지 않았다 🥺 언젠

joy-able.tistory.com


 Gunicorn 이란? 왜 쓰는 걸까?

https://codingnetworker.com/2016/01/deploy-the-network-configuration-generator-using-ansible-and-vagrant/

Gunicorn 이란?

Gunicorn, 즉 Green Unicorn 은 UNIX를 위한 파이썬 WSGI(Web server Gateway Interface) HTTP 서버이다. Gunicorn은 웹 서버와 우리가 만든 웹 어플리케이션 중간에 일어나는 모든 일들을 담당한다고 보면 된다.

 

Web Server Gateway Interface

PEP3333 에 따르면, 파이썬 WSGI는 웹 서버와 파이썬 웹 어플리케이션이 서로 소통할 수 있도록 도와주는 인터페이스이다. 즉, 서버사이드에서 어플리케이션 측이 가지고 있는 '호출될 수 있는 오브젝트(callable object)'를 불러올 수 있게 도와주는 역할을 한다. 

 

주로 플라스크나 장고 어플리케이션에서 wsgi.py 라는 파일을 하나 만들어 Gunicorn에서 호출할 수 있도록 해준다. wsgi.py 파일을 통해 요청 받은 데이터를 우리의 어플리케이션에 넘겨주고, 웹 어플리케이션에서 응답(response)한 데이터를 받는다. 

 

Gunicorn이 우리의 웹 어플리케이션을 여러번 실행하면서 제대로 실행 되는지 체크하고, 필요한 경우 다시 실행하기도 한다. 그리고 들어오는 요청들을 웹 어플리케이션에 전달해주고, 웹 서버와 정상적으로 커뮤니케이션 할 수 있도록 도와준다. 이 모든 것을 하면서도 적은 양의 에러, 빠른 속도로 많은 사람들이 Gunicorn을 쓰고 있다. 

 

결론

파이썬 웹 어플리케이션을 만들 계획이라면, WSGI 서버를 구축하는 것을 추천한다. 배포가 더욱 안정되고, 더 많은 요청(request)들을 한번에, 빠르게 받아낼 수 있기 때문이다. 

 Gunicorn  설치 및 실행

# gunicorn을 설치하고, requirement.txt에 기록한다

pip install gunicorn
pip freeze -> requirement.txt

wsgi.py 파일 만들기

app.py 파일이 있는 directory 위치에 만들어준다.

from app import app 

if __name__ == "__main__":
	app.run()

- 로컬 환경에서 앱 실행하기

gunicorn wsgi:app -w 2 -b 0.0.0.0:8080 -t 30

Reference

Gunicorn 공식 홈페이지

What is Gunicorn?

[Gunicorn] Gunicorn 란? 쓰는 이유는?

How to deploy a website on AWS with Docker, Flask, & React from scratch