반응형
WSGI를 도입하면서 정확이 이게 무엇이고 어떻게 작동하는지를 모르고 사용만 했다.
python 공식문서에 설명이 되어있는 것을 봐도 너무 어려웠다.
이것저것 알아보고 공부한 것을 정리해보겠다.
WSGI는 번역기
WSGI란?
- 웹서버와 프레임워크(django), 애플리케이션을 연결해주는 Python의 표준 API
- WSGI는 서버와 게이트웨이,애플리케이션과 프레임워크 양단으로 나뉘어 있다.
- 웹서버는 Python코드를 읽을 수 없고, 굳이 불필요한 코드를 전송해서 비용을 증가시킬 이유가 없다.
- WSGI는 서버에서는 애플리케이션으로 대하고, 애플리케이션에서는 서버처럼 행동한다.
웹서버와 웹 애플리케이션의 소통을 도와주는 번역기와 같은 역할을 하는 API
WSGI 작동방식
1. WSGI와 Web Server
- Callable Object를 통해 Web Server 요청에 대한 정보를 WAS에 전달
- Callable Object는 Function이나 Object의 형태가 될 수 있다.
- Web Server는 HTTO Request(Method, URL, Data 등), Callback 함수를 제공
2. WSGI와 Web Framwork, APP
- 웹 애플리케이션 서버는 호출 가능한 class, objects, function형식으로 서버에 표시된다.
- retrun [page]와 같은 형식으로 모든 데이터를 반복 가능한 형식으로 반환해야 한다.
추가
- 장고의 내장 서버는 WSGI의 기능을 자체적으로 포함 -> 개발환경에서 python manage.py runserver로 테스트
- Production 단계에서는 Nginx, Gunicorn, Django의 구성을 많이 사용(현재 우리 프로젝트 구성)
- Gunicorn을 사용할 때 worker process의 개수와 worker class(async방식인 Gevent, Tornado)를 설정하여 요청 처리 성능을 높일 수 있다.
WSGI와 CGI도 함께 같이 언급이 많이 되는데 둘의 차이점도 알아보았다.
3.WSGI와 CGI의 차이
CGI |
WSGI |
|
|
반응형
'Django' 카테고리의 다른 글
[django/error]ValueError: Dependency on app with no migrations: (한 줄로 끝내는 error) (0) | 2022.06.02 |
---|---|
[Redis/Memcached]Cache 란? django settings.py에 Cache 설정하는 법(Redis 영업 글) (2) | 2022.05.27 |
[django]Django 소개 및 장단점 (2) | 2022.05.24 |
[AWS/nginx/react/Gunicorn/django]신입 개발자의 django 프로젝트 배포 삽질_2(해결) (0) | 2022.05.18 |
[AWS/nginx/react/Gunicorn/django]신입 개발자의 django 프로젝트 배포 삽질_1 (0) | 2022.05.18 |