YUMSERV
article thumbnail
Published 2023. 5. 14. 20:59
FastAPI란 Language/Python
반응형

1. FastAPI란

FastAPI프레임워크, 고성능, 간편한학습, 빠른코드작성, 준비된프로덕션
• 빠름: (Starlette과 Pydantic 덕분에) NodeJS 및 Go와 대등할 정도로 매우 높은 성능.
사용 가능한 가장 빠른 파이썬 프레임워크 중 하나.
• 빠른 코드 작성: 약 200%에서 300%까지 기능 개발 속도 증가.
• 적은 버그: 사람(개발자)에 의한 에러 약 40% 감소.
• 직관적: 훌륭한 편집기 지원. 모든 곳에서 자동완성. 적은 디버깅 시간.
• 쉬움: 쉽게 사용하고 배우도록 설계. 적은 문서 읽기 시간.
• 짧음: 코드 중복 최소화. 각 매개변수 선언의 여러 기능. 적은 버그.
• 견고함: 준비된 프로덕션 용 코드를 얻으십시오. 자동 대화형 문서와 함께.
• 표준 기반: API에 대한 (완전히 호환되는) 개방형 표준 기반: OpenAPI (이전에 Swagger로 알려졌던) 및 JSON 스키마.

 

2. FastAPI 구조

FastAPI 가 빠른 이유는

→ Starlette을 쓰기 때문, Uvicorn이 빠른 이유

  → Uvicon 을 쓰기 때문이고, Uvloop이 빠른 이유는

    → Node.js 비동기IO의 핵심인 libuv를 기반으로 Cython으로 작성되었기 때문

 

  • Django : 전체 웹 애플리케이션을 개발하고자 하는 경우, 강력한 보안 기능이 필요한 경우
  • Flask : 작은 규모의 웹 애플리케이션을 개발하고자 하는 경우, 유연한 개발이 필요한 경우 (WSGI 구조)
  • FastAPI : 비동기 처리를 필요하는 경우, 높은 성능과 효율성이 요구되는 경우, API 개발에 중점을 둔 경우 (ASGI 구조)
WSGI :
동기적이며 한번에 하나의 요청만을 처리
파이썬 웹 애플리케이션과 웹 서버 간의 표준 인터페이스로, 파이썬에서 웹 애플리케이션을 만들기 위한 규격입니다. WSGI는 동기적인 방식으로 작동하기 때문에 한 번에 하나의 요청만 처리할 수 있습니다. 이는 특정 상황에서 성능 제한을 초래할 수 있습니다.
ASGI : 
비동기적이며 동시에 여러 요청을 처리하며, wsgi의 단점을 보완하여 나온것.
WSGI의 비동기 버전으로 볼 수 있습니다. ASGI는 비동기적인 방식으로 작동하기 때문에 동시에 여러 요청을 처리할 수 있습니다. 이는 웹 소켓과 같은 비동기 프로토콜을 지원하는 데 유용하며, 웹 애플리케이션의 성능을 향상시킬 수 있습니다.

 

 

3. FastAPI 설치

FastAPI 설치

* python 3.7 이상 설치

pip3 install fastapi
pip3 install uvicorn[standard]

 

예제

# vi main.py 
from typing import Union
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

 

실행

# uvicorn main:app --reload --host 0.0.0.0
INFO:     Will watch for changes in these directories: ['/root']
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [90640] using StatReload
INFO:     Started server process [90642]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
...

 

WEB 접속

http://IP:8000/docs#/

 

 

 

 

 

반응형
profile

YUMSERV

@lena04301

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!