본문 바로가기
TIL

[TIL] Fast API / Uvicorn / ASGI

by thegreatjy 2023. 9. 8.
728x90

Fast API :

현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python3.6+의 API를 빌드하기 위한 웹 프레임워크

비동기 방식의 웹 서버 프레임워크

 

특징 :

- 빠르다 : Starlette 및 Pydantic을 기반으로 하여 빠른 웹 프레임워크 중 하나이다.

- 자동으로 문서 제공 : swagger ui를 통해 브라우저에서 api를 직접 호출 할 수 있기 때문에 테스트에 용이하다.

 

Uvicorn :

An ASGI web server, for Python.

Uvicorn은 Python용 ASGI 웹 서버

비동기 방식의 http 서버

 

CGI :

Common Gateway Interface

사용자가 요청 > 서버에서 처리 > 사용자에게로 결과 리턴

이때 공통 표준 인터페이스를 지정하여 언어, 서버로부터 독립성을 갖게 함

 

요청이 들어올 때마다, 프로세스를 실행

동시에 다량의 요청이 들어오면, 매번 프로세스를 생성, 실행 및 삭제를 반복한다.

요청에 대한 정보를 환경변수, STDIN 등 으로 처리한다.

 

WSGI :

요청에 대한 정보를 객체, 함수, collable object로 처리한다.

동기성에 대한 요청 처리에 적합

 

단점

WSGI 애플리케이션은 요청을 받고 응답을 반환하는 단일 동기 callable 항목

이는 장기 폴링 HTTP 또는 WebSocket 연결과 같이 장기 연결을 허용하지 않습니다.

 

ASGI :

동기적, 비동기적 요청 처리에 대한 표준을 제공

단일 비동기 callable 항목으로 구성

여러 개의 수신 이벤트와 발신 이벤트를 허용

애플리케이션이 다른 작업(예: Redis 대기열과 같은 외부 트리거에서 이벤트 수신 대기)을 수행할 수 있도록 백그라운드 코루틴을 허용

scope, send, receive를 갖는다.

 

scope : 

특정 연결에 대한 세부사항을 담고 있는 dict 

send :

비동기 callable(함수를 호출하듯이 호출할 수 있는 객체). 

어플리케이션이 클라이언트에게 이벤트 메세지를 보낼 수 있게 한다.

receive :

비동기 callable

어플리케이션이 클라이언트로부터 이벤트 메세지를 받는다.

 

callable :

파이썬에서 호출 가능한 클래스 인스턴스, 함수 그리고 메소드 등의 객체 


References

https://fastapi.tiangolo.com/ko/

https://wikidocs.net/175092

https://www.uvicorn.org/

https://kangbk0120.github.io/articles/2022-02/cgi-wcgi-asgi

https://asgi.readthedocs.io/en/latest/?ref=breezymind.com 

https://velog.io/@crosstar1228/BackendFastAPI-%EC%9E%85%EB%AC%B8-1-Uvicorn-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EA%B0%84%EB%8B%A8%ED%95%9C-%EC%9B%B9-%EC%84%9C%EB%B2%84-%EA%B5%AC%ED%98%84

 

728x90