Linuxpia/웹 프로그램

[FastAPI] ASGI란 어떤 것인가요?

Linuxpia4U 2024. 2. 29. 03:01
반응형

ASGI (Asynchronous Server Gateway Interface)

ASGI (Asynchronous Server Gateway Interface)는 Python 웹 애플리케이션과 서버 사이의 인터페이스입니다. WSGI (Web Server Gateway Interface)의 후속작으로, 비동기 프로그래밍을 지원하기 위해 만들어졌습니다.

WSGI가 동기적인 요청 처리에 초점을 맞춘 반면, ASGI는 동시성을 처리하는 현대적인 웹 애플리케이션에 더 적합한 비동기 요청 처리를 가능하게 합니다. 이는 다수의 요청을 동시에 처리하고, WebSockets과 같은 양방향 통신을 지원하는 데 이점이 있습니다.

ASGI는 세 가지 주요 구성 요소

  1. 애플리케이션(Application): 애플리케이션은 ASGI 인터페이스 사양에 따라 작성된 비동기 Python 함수 또는 클래스입니다. FastAPI, Django Channels 등이 ASGI를 지원하는 웹 프레임워크 예입니다.
  2. 서버(Server): 서버는 클라이언트로부터의 연결을 받아들이고, ASGI 애플리케이션으로 요청을 전달하며, 애플리케이션의 응답을 클라이언트에게 전송합니다. Uvicorn, Daphne, Hypercorn 등이 ASGI 서버의 예입니다.
  3. 프로토콜(Protocol): 프로토콜은 애플리케이션과 서버 간의 통신 규칙을 정의합니다. 예를 들어 HTTP, WebSocket, 생명주기 이벤트(lifespan events) 등의 ASGI 메시지 유형을 지정합니다.

정리

ASGI의 비동기 지원 덕분에 개발자들은 동시에 발생하는 여러 네트워크 연결과 I/O 작업을 더 효율적으로 처리할 수 있게 되어, 고성능의 실시간 애플리케이션을 만들 수 있습니다.

반응형