728x90
반응형
WSGI(웹 서버 게이트웨이 인터페이스, Web Server Gateway Interface)는 Python 웹 애플리케이션과 웹 서버 간의 표준 인터페이스를 제공하는 규격입니다. WSGI는 Python 웹 애플리케이션 개발자와 웹 서버 개발자 간의 명확한 역할 구분을 가능하게 하고, 다양한 웹 서버에서 같은 Python 애플리케이션을 구동할 수 있도록 해줍니다.
WSGI의 핵심 개념
- 서버와 애플리케이션의 분리: WSGI는 웹 서버와 웹 애플리케이션의 역할을 명확하게 구분합니다. 웹 서버는 클라이언트로부터 요청을 받아서 Python 애플리케이션에 전달하고, 애플리케이션은 그 요청에 대해 응답을 웹 서버에 반환합니다.
- 호환성: WSGI를 사용하면 Python 애플리케이션이 다양한 웹 서버(Nginx, Apache 등)와 호환될 수 있습니다. WSGI를 지원하는 모든 웹 서버에서 동일한 Python 웹 애플리케이션을 구동할 수 있습니다.
- 미들웨어: WSGI 미들웨어는 웹 서버와 애플리케이션 사이에 위치하여 요청을 가로채거나 변형, 로그 기록 등의 다양한 작업을 수행할 수 있습니다.
WSGI의 기본 구조
WSGI는 서버와 애플리케이션 사이에서 상호작용하는 인터페이스로, 다음과 같은 두 가지 역할이 존재합니다:
- WSGI 서버: 클라이언트로부터 HTTP 요청을 받아들이고, 이를 WSGI 애플리케이션으로 전달한 후 응답을 클라이언트에 다시 전송합니다. 예시로는 Gunicorn, uWSGI, Daphne 등이 있습니다.
- WSGI 애플리케이션: 서버로부터 전달받은 요청을 처리하고 응답을 생성하여 반환합니다. Python으로 작성된 애플리케이션(예: Flask, Django)은 WSGI 애플리케이션입니다.
WSGI 애플리케이션 예시 (단순한 함수)
def application(environ, start_response):
status = '200 OK'
headers = [('Content-type', 'text/plain')]
start_response(status, headers)
return [b"Hello, World!"]
위 코드는 WSGI 규격에 맞춘 간단한 애플리케이션입니다. environ은 요청 정보를 담고 있는 딕셔너리이고, start_response는 HTTP 상태 코드와 헤더를 설정하는 콜백 함수입니다.
WSGI와 Django
Django는 WSGI를 기본적으로 지원하는 프레임워크입니다. 따라서 Django 애플리케이션을 배포할 때 WSGI 서버를 사용하게 됩니다. Django에서 기본 WSGI 설정 파일은 myproject/wsgi.py에 위치합니다. 이 파일을 통해 애플리케이션이 WSGI 서버에서 동작하도록 설정합니다.
WSGI는 Python 웹 개발에서 배포와 서버 간의 상호작용을 표준화해 주므로, Python 웹 프레임워크를 배포할 때 필수적인 개념입니다.
'Category > Django' 카테고리의 다른 글
| N+1 문제 해결 (0) | 2025.07.17 |
|---|---|
| django-environ란? (0) | 2024.09.16 |
| Django(장고) 템플릿 필터란? (0) | 2024.09.13 |
| Paginator란? (0) | 2024.09.13 |
| 장고(Django) 역참조를 위한 '모델명_set' (0) | 2024.09.11 |