FastAPI

우야·2021년 8월 27일
0

FastAPI

  • Python으로 개발하는 성능 좋은 Web Framework으로 Web application을 개발 할때 사용
    • Fast : NodeJS, Go와 동등한 빠른 속도 (with stalette, Pydantic)
    • Fast to code : 개발의 생산성 향상
    • Less bugs : 개발자의 버그를 줄일수 있음
    • Intuitive : 좋은 Editor들을 지원 (VS Code)
    • Easy : 익히기 쉬운 디자인으로 되어 있고, Doc가 읽기 쉬움
    • Short : 적은 코드, 파라미터로 다양한 기능 지원
    • Robust : 상품 출시를 쉽게 하고, Doc을 자동생성
    • Standard-based : Open API(Swagger)사용 및 Json schema 사용

Uvicorn

  • 가볍고 빠른 "ASGI" server (Async Server Gateway Interface)
    • 한 개의 Process에서 asynchronous Python web code를 실행하게 해준다.
    • uvloop : python built-in asyncio의 eventloop를 대체 가능한것으로 libuv를 사용하여 cython으로 구현된것으로 고성능 멀티 플랫폼 aync I/O라이버리리로 빠르고 안정적이다. (참고로 nodejs가 인기를 얻고 보급된 이유가 libuv덕분이라고 하고, uvloop는 nodejs보다 약 2배, Go와는 비슷한 수준의 성능을 보여준다.)
    • https://hidekuma.github.io/python/uvloop/

Gunicorn

  • 여러개의 Uvicorn을 Worker로 사용하여 Multi Process로 실행하고 관리하는 기능
    • 동기적 처리와 병행 처리를 위한 좋은 방법이 될수 있다.

FastAPI with Uvicorn with Gunicorn

  • ASGI server(Uvicorn)위에 Web Framework(FastAPI)를 올릴수 있으며, 이 FatAPI 기반으로 async Web application을 개발할 수 있다.
  • 그리고, Multi Process(Gunicorn) Web Application을 개발을 할 수도 있다.

Docker image (uvicorn-gunicorn-fastapi-docker)

profile
Fullstack developer

0개의 댓글