WSGI

강현구·2022년 4월 5일
0

WSGI

: Web Server Gateway Interface
: 웹서버가 request를 웹 응용프로그램이나 프레임워크에 전달하는 간단한 호출 규약 (by python) <참고 : 위키피디아_WSGI>
(ASGI = WSGI의 연속성산의 비동기 규약(Asynchronous Server Gateway Interface)

장고는 웹 프레임워크이고 하나의 애플리케이션이다. 여러 사용자가 동시에 사이트에 접속할 경우 이것을 처리하는 것은 웹 서버의 역할이다. 장고로 서버를 띄우기는 하지만 단지 테스트 용도로 제공되는 수준에 불과하다.
실제 배포 시에는 nginx나 apache와 같은 웹 서버가 필요하며, 그 웹 서버와 파이썬의 애플리케이션인 장고가 통신할 수 있게하는 WSGI(gunicorn, uwsgi)가 필요하다. 쉽게 말해서 요청의 전달자 역할이다.

장고를 runserver로 돌리게되면 장고의 내장 서버에 자체적으로 구성되어 있는 WSGI가 작동하게 되고 그 역할을 대신한다.

실제 Production에서는 Web Server 와 WSGI를 탑재해야하고, WSGI와 Django(Web Application)사이에서 WSGI protocol이 사용된다.

WSGI

  • Gunicorn
  • uWSGI

    이 application server들은 일종의 웹서버로서 작동할 수도 있다.

    1. HTTP를 이해할수 있고,
    2. 다른 wsgi app을 invoke 할 수 있고,
    3. prefork 할 수 있다.
      • Prefork 방식 : 한 자식프로세스당 하나의 쓰레드를 사용하는 방법
        기본 사용 메모리가 worker보다 높으며 프로세스 간 메모리를 공유하지 않는 독립 형태이므로 안정적임.
        아파치 컴파일시 옵션 추가하지 않을경우 기본으로 이 모듈로 동작합니다.
      • Worker 방식 : 한 자식프로세스당 여러개의 쓰레드를 사용하는 방법
        기본 사용 메모리는 prefork보다 낮으며 쓰레드 간에 메모리를 서로 공유함.
        동시접속자가 많은 사이트에 적합합니다.
      • 출처: https://itmore.tistory.com/entry/아파치-prefork-worker-란 [IT모아]

웹서버 프로그램

profile
한걸음씩

0개의 댓글