본문 바로가기
Python/FLASK

플라스크 - WSGI?

by sophia02 2022. 11. 13.

WSGI(Web Server Gateway Interface)

파이썬에서 어플리케이션 즉 파이썬 스크립트가 웹 서버와 통신하기 위한 인터페이스, 프로토코 개념으로도 이해할 수 있습니다.  WSGI는 서버와 앱 양단으로 나뉘어져 있으며, WSGI 리퀘스트를 처리하려면 서버에서 환경정보와 콜백함수를 앱에 제공해야 합니다. 그리고 그 앱은 그 요청을 처리하고 콜백함수를 통해 서버에 응답합니다.

 

방식

요청 -> 웹 서버 -> WESGI Server(middleware) -> WSGI를 지원하는 웹 어플리케이션(Django; flask 등)

 

웹 서버가 웹 애플리케이션과 통신하는 방법과 웹 애플리케이션을 연결하여 하나의 요청을 처리하는 방법에 대한 설명서

즉, 여러 종류의 웹 서버와 여러 종류의 웹 애플리케이션이 모두 통신이 가능하도록 하기 위한 규약이라고 할수 있습니다.

 

웹 서버와 웹 애플리케이션

웹 서버는 클라이언트의 정적 웹 페이지 요청을 처리하는 프로그램을 말합니다.

웹 애플리케이션은 웹 서버가 동적 웹 페이지 요청을 처리할 수 있게 도와주는 역할을 합니다.

 

동적인 웹 페이지를 만들기 위해서는 웹 서버와 웹 애플리케이션이 서로 소통을 해야 합니다.

 

WSGI Server(middleware)

웹 서버와 WSGI를 지원하는 웹 어플리케이션 사이에서 동작하며, 아래와 같은 일을 합니다.

  • 환경변수가 바뀌면 타겟 URL에 따라서 리퀘스트의 경로를 지정해줌
  • 같은 프로세스에서 여러 애플리케이션과 프레임워크가 실행됨
  • XSLT 스타일시트를 적용하는 것과 같이 전처리함

Werkzeug

Werkzeug는 포괄적인 WSGI 웹 애플리케이션 라이브러리로 WSGI 응용 프로그램을 위한 다양한 유틸리티의 단순한 모음으로 시작하여 가장 발전된 WSGI 유틸리티 라이브러리 중 하나입니다.

Werkzeug는 Flask에서 기본적으로 사용하는 WSGI 미들웨어로, WSGI 미들웨어 역할 뿐만 아니라 웹 서버의 역할을 할 수도 있기에 별다른 설정 없이도 Flask 앱을 실행할 수 있습니다.