#제발 #좋은건 #쓰자 #ASGI
깊은 내용까지는 나도 모름.
보통 Tornado, Flask, Django 등 프레임워크를 사용.
여기에 몽키패치, 유니콘 등등
패키지로 사용해서 서버의 속도, 밴드위즈 등을 상향시킬 수 있음.
근데,
사실 지금까지 Node, Go 언어가 네트워크 쪽으로 빠르다는 평가가 많았는데
실제로도 빨랐음.
사용해본 결과,
Node, Go 모두 간편하게 코드 몇줄로 웹서버를 동작 시킬 수 있었음.
물론 Flask 도 비슷한 수준으로 간편하게 웹서버를 만들 수 있음.
하지만,
딱히 좋은 성능을 낼 수 없다는 것이 문제.
FastAPI는 Node, Go 에서 볼 수 있었던 성능과
Flask 에서 볼 수 있었던 간편함과 편리성을 모두 가져 갈 수 있음.
참조 : https://fastapi.tiangolo.com
설치도 매우 간편한데,
--01. pip install fastapi
--02. pip install uvicorn
참조 사이트에서 큇스타트를 확인하면 실행까지 5분이면 끝!
참조할만한 코드는,
from typing import Optional, List, Tuple, Set, Dict
from datetime import datetime, date
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: int
gen: date
is_offer: Optional[bool] = None
@app.get('/')
async def read_root():
my_data = {
'name': 'Sik',
'price': 1000,
'gen': '2020-09-09',
'is_offer': True,
}
my_item: Item = Item(**my_data)
return my_item
@app.get('/item/{item_id}')
async def read_item(item_id: int, q: Optional[str] = None):
return ({
'item': item_id,
'q': q
})
@app.put('/item/{item_id}')
async def update_item(item_id: int, item: Item):
return ({
'item_name': item.name,
'item_id': item_id
})
localhost:8000/docs 쪽으로 접근하면,
localhost:8000/redoc 쪽으로 접근하면,
이거 쓰는게 지금은 가장 빠르고 쉽게 API를 설계할 수 있는 방법으로 생각됨.
어짜피 같은 파이썬으로 돌아가는 로직이라 호환이 아예 1도 안되는건 아니니까.
안전성도 덤으로 가져 갈 수 있음.