티스토리 뷰
Web/Django
[Django] Django(웹어플리케이션, 개발자가 작성한 코드)는 어떻게 클라이언트의 요청을 처리할 수 있을까?
angelatto 2021. 12. 3. 14:28
- 클라이언트에서 요청을 보낸다.
- 웹서버는 요청을 받는다. 이 때, 동적인 페이지를 요청했다면 WSGI 서버를 호출한다.
- 웹서버는 Nginx, Apache 같은 소프트웨어이다.
- 웹 서버의 역할
- 웹 페이지를 클라이언트로 전달한다.
- 주로 그림, css, 자바스크립트를 포함한 html 문서가 클라이언트로 전달된다.
- WSGI 서버는 장고(WSGI를 사용하는 웹 어플리케이션, WSGI는 파이썬에 종속적임) 를 호출한다.
- WSGI 서버는 장고와 통신할 때 'wsgi.py' 파일을 통해 장고 어플리케이션을 호출한다.
- 만약 프로젝트의 디렉토리 구조를 커스터마이징하여 settings.py 파일이 이동하게 된다면 그 경로를 여기서 반드시 수정한다.
- 참고로 장고 내장서버는 WSGI 기능을 자체적으로 포함한다. (python manage.py runserver)
- 그럼 왜 우리는 내장서버를 이용하지 않을까?
- 장고 공식문서에서 production setting에서 사용하지 말라고 주의를 주고 있다 (보안 및 퍼포먼스 이슈 있을 수 있음)
- 그리고 장고의 목적은 웹서버가 아니라 단지 웹 프레임워크이다. !!
- 그럼 왜 우리는 내장서버를 이용하지 않을까?
- WSGI 서버 측면에서 보면, WSGI 서버가 장고 애플리케이션의 wsgi.py 파일을 호출하여 WSGIHandler 객체를 얻은 다음에,
이 핸들러 객체를 다시 호출하여 최종 응답을 생성하고, 이를 웹 서버에 돌려주는 것이다.
- 호출받은 웹 어플리케이션은 요청에 따라 적절한 처리를 수행한다.
- 수행 결과를 다시 WSGI 서버를 통해 웹서버로 전달하고, 웹서버는 최종 응답을 클라이언트에게 보낸다.
<WSGI 규격에 따라 애플리케이션을 개발할 때 중요한 사항 3가지>
- 개발이 필요한 애플리케이션을 함수 또는 클래스의 메소드로 정의하고, 애플리케이션 함수의 인자는 다음과 같이 정의합니다.
- def application_name(environ, start_response):
- environ : 웹 프레임워크에 이미 정의되어 있음, HTTP_HOST, HTTP_USER_AGENT, SERVER_PROTOCOL 과 같은 HTTP 환경변수를 포함합니다.
- start_response : 애플리케이션 내에서 응답을 시작하기 위해 반드시 호출해야 하는 함수입니다.
- def application_name(environ, start_response):
- start_response(status, headers)
- status : 응답 코드 및 응답 메세지를 지정합니다.
- headers: 응답 헤더를 지정합니다.
- 애플리케이션 함수의 리턴값은 응답 바디에 해당하는 내용으로, 리스트나 제너레이터와 같은 iterable 타입이어야 합니다.
'Web > Django' 카테고리의 다른 글
[Django] Asynchronous Task 처리하는 방법 (ft-Celery, RabbitMQ, Redis) (0) | 2021.12.16 |
---|
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백준
- java
- @functools.singledispatch
- @functools.lru_cache
- 익명자식객체
- Git
- 메이븐 저장소
- jre
- 자바스크립트Call-back
- @functools.wraps
- 정적멤버
- ES6
- 자바스레드
- 사용자정의예외클래스
- os
- 백준2206 파이썬 풀이
- 자바스크립트Promise
- dynamic-project
- 클래스와객체
- method와 function
- 생성자필드메소드
- nunjucks
- 인스턴스멤버
- yarn start
- sequelize.fn
- nodejs
- 자바빌드도구
- es6모듈
- jdk
- 객체지향개념
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함