ETC
FastAPI가 뭘까?
D_Helloper
2023. 6. 9. 15:20
파이썬 3.6 이상에서 작동하는, 표준 파이썬 타입 힌트를 바탕으로 한, 현대적이고 빠른 API 서버 웹 프레임워크
- Flask와 비슷한 구조를 가짐
- 기본적으로 비동기식으로 작성되어 있어 빠른 성능을 보여줌
FastAPI 장점
공식 블로그의 장점에는 아래와 같은 설명이 기재되어 있다.
- Node.js, Go와 비슷한 수준의 빠른 성능
- Go는 태생부터 C와 속도 경쟁할 만큼 빨랐는데, 이러한 Go와 비견될 정도의 속도라면 충분히 장점이 될 것
- 개발 속도 200%~300% 향상
- 코드 버그 40% 감소
- 쉬운 사용
부가적인 기능
- 자동으로 API Documentation을 지원하기 때문에, 서버를 구동하고 /docs 로 접속하면 Swagger UI가 나옴
- 데이터의 타입을 명시해줄 수 있음
- 아래 예시는, 데이터를 정의하기 위해 class를 작성하고 데이터의 타입을 명시
- 비동기로 작성하기 위해 함수 앞에 async 키워드 추가
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
store_detail: str = None #치킨전문점
gps_lat: float = None #37.4977166
gps_lon: float = None #127.0274515
user_city: str = None #강남구
user_dong: str = None #서초동
user_dist: int = None #1
# 업종분석
@app.post("/analysis_svc/")
async def analysis_svc(item: Item):
pass
return {'svc_induty_nm':item.store_detail, 'slopee':'증가'}
출처 : https://jongsky.tistory.com/13
사용 예)
# main.py
from fastapi import FastAPI # FastAPI 모듈 가져오기
app = FastAPI() # 객체 생성
@app.get("/") # Route Path
def index():
# Json 타입으로 값 반환
return {
"Python": "Fast API Framework",
}
@app.get("/something")
def something():
return {
"Something": "Test Page",
}
MSA 구조를 채택하고, TTS 서버를 운용해야 할 때 한 번 사용해 봤는데 TTS 기능을 포함한 메서드를 정의해서 요청이 오면 TTS 가 동작하도록 만들었었다.
간단히 어노테이션을 활용하여 구현할 수 있고, 정말 빠르고 좋더라. 코드 자체도 굉장히 직관적인 편이라고 생각하는데,일단 나는 Flask보다 FastAPI를 자주 쓸 것 같다.