파이썬 웹 프레임워크와 서버를 잇는 「표준 인터페이스」가 WSGI와 ASGI입니다.
이게 있어서 Flask 앱을 gunicorn·uWSGI 어디서든 돌릴 수 있고, FastAPI 앱을 uvicorn·hypercorn에서 돌릴 수 있습니다.
WSGI(Web Server Gateway Interface).
동기식 표준.
def application(environ, start_response): ...
— 함수 시그니처.
Flask·Django·Pyramid 같은 전통적 프레임워크가 WSGI 기반.
서버는 gunicorn·uWSGI·waitress.
한계 — 동기식이라 「요청 1개 = 워커 1개」.
WebSocket·Server-Sent Events 같은 장기 연결을 효율적으로 처리 못 함.
비동기 IO의 이점도 못 누림.
ASGI(Asynchronous Server Gateway Interface).
비동기식 표준.
async def app(scope, receive, send): ...
— async 시그니처.
FastAPI·Django(3.0+)·Starlette·Quart가 ASGI.
서버는 uvicorn·hypercorn·daphne.
ASGI는 WSGI 호환도 가능.
uvicorn으로 Flask 앱을 돌릴 수도 있습니다(WSGIMiddleware로 감싸서).
새 코드라면 ASGI 권장 — 지금 동기여도 나중에 async가 필요할 때 자연스럽게 진화 가능.
한 줄 요약
WSGI는 동기식 표준(Flask·Django), ASGI는 비동기식 표준(FastAPI).
ASGI는 WebSocket 같은 장기 연결과 async에 강하고, WSGI 호환도 가능합니다.
더 알아볼 것
- gunicorn — 가장 인기 있는 WSGI 서버
- uvicorn — 인기 있는 ASGI 서버
- Starlette — FastAPI의 토대