728x90
๋ฐ์ํ
๐ฐ FastAPI ๊ณต์๋ฌธ์๋ฅผ ๋ณด๋ฉด์ ๊ฐ์ธ์ ์ผ๋ก ์ ๋ฆฌํ ๊ธ ์
๋๋ค.
"FastAPI๋ ํ๋์ ์ด๊ณ , ๋น ๋ฅด๋ฉฐ(๊ณ ์ฑ๋ฅ), ํ์ด์ฌ ํ์ค ํ์
ํํธ์ ๊ธฐ์ดํ Python3.8+์ API๋ฅผ ๋น๋ํ๊ธฐ ์ํ ์น ํ๋ ์์ํฌ"
๋ผ๊ณ ๊ณต์ ๋ฌธ์์ ์ฐ์ฌ์๋ค.
์ฃผ์ํน์ง์ ๋ค์๊ณผ ๊ฐ๋ค.
ํน์ง | ๋ด์ฉ |
๋น ๋ฆ | (Starlette๊ณผ Pydantic ๋๋ถ์) NodeJS ๋ฐ Go์ ๋๋ฑํ ์ ๋๋ก ๋งค์ฐ ๋์ ์ฑ๋ฅ. ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ์ฅ ๋น ๋ฅธ ํ์ด์ฌ ํ๋ ์์ํฌ ์ค ํ๋ |
๋น ๋ฅธ ์ฝ๋ ์์ฑ | ์ฝ 200%์์ 300%๊น์ง ๊ธฐ๋ฅ ๊ฐ๋ฐ ์๋ ์ฆ๊ฐ |
์ ์ ๋ฒ๊ทธ | ์ฌ๋(๊ฐ๋ฐ์)์ ์ํ ์๋ฌ ์ฝ 40% ๊ฐ์ |
์ง๊ด์ฑ | ํ๋ฅญํ ํธ์ง๊ธฐ ์ง์. ๋ชจ๋ ๊ณณ์์ ์๋์์ฑ. ์ ์ ๋๋ฒ๊น ์๊ฐ |
์ฌ์ | ์ฝ๊ฒ ์ฌ์ฉํ๊ณ ๋ฐฐ์ฐ๋๋ก ์ค๊ณ, ์ ์ ๋ฌธ์ ์ฝ๊ธฐ ์๊ฐ |
์งง์ | ์ฝ๋ ์ค๋ณต ์ต์ํ, ๊ฐ ๋งค๊ฐ๋ณ์ ์ ์ธ์ ์ฌ๋ฌ ๊ธฐ๋ฅ, ์ ์ ๋ฒ๊ทธ |
๊ฒฌ๊ณ ํจ | ์๋ ๋ํํ ๋ฌธ์์ ์ค๋น๋ ํ๋ก๋์ ์ฉ ์ฝ๋ |
ํ์ค ๊ธฐ๋ฐ | API์ ๋ํ (์์ ํ ํธํ๋๋) ๊ฐ๋ฐฉํ ํ์ค ๊ธฐ๋ฐ: OpenAPI (์ด์ ์ Swagger๋ก ์๋ ค์ก๋) ๋ฐ JSON ์คํค๋ง |
์ค์น
pip install "fastapi[all]"
# pip install fastapi ๋ก ์ค์น์ Uvicorn ๊ฐ์ ์์กด์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐ๋ก ์ค์นํด์ผํจ.
Uvicorn?
CGI(Common Gateway Interface)
- ์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ๋์ ์ธ ์์ฒญ์ด ๋ค์ด ์์ ๋ ๊ทธ๊ฒ์ ๋ํ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์๋ต์ด ํ์ํจ.
- ์ด๋ ์๋ฒ๋ง๋ค, ์ธ์ด๋ง๋ค ์ด ํํ๊ฐ ๋ค๋ฅด๋ฉด ๊ณค๋ํ๊ธฐ ๋๋ฌธ์ ๊ณตํต ๊ท์ฝ(Interface)๋ฅผ ๋ง๋ค์ด์ผํจ.
- ์ด Interface๋ฅผ CGI(Common Gateway Interface)
WSGI(Web Server Gateway Interface)
- CGI์ ์์ฒญ์ด ๋ค์ด์ฌ ๋ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๋ ๋ฑ์ ๋จ์ ์ ๋ณด์ํ ๋ฐฉ๋ฒ.
- Callback Object ๋ฑ์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํจ.
- ์ญํ ๋ง๋ค WSGI application, WSGI Middleware ๋ฑ์ผ๋ก ์ธ๋ถ์ ์ผ๋ก ๋๋๊ธฐ๋ํจ.
ASGI(Asynchronous Server Gateway Interface)
- WSGI์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋จ์ ์ ๊ฐ์ ํ๊ธฐ ๋ง๋ค์ด์ง ๋น๋๊ธฐ ์๋ฒ ๊ฒ์ดํธ์จ์ด ์ธํฐํ์ด์ค
- Uvicorn์ด ASGI์์ ํ์ฉ๋จ.
Uvicorn์ ASGI Web Application์ด๊ณ ๋๊ธฐ ๋๋ ๋น๋๊ธฐ์ ์ผ๋ก ๋ค์ด์ค๋ ์์ฒญ์ ๋ํด ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
FastAPI ์ฌ์ฉ ์์
# ๋๊ธฐ์๋ฒ
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"message":"Hello, FastAPI"}
@app.get("/haha")
def haha():
return {"message":"Use Uvicorn Server"}
uvicorn ํ์ผ์ฌํ์ผ:์ธ์คํด์ค๋ช
--reload
# ์ธ์คํด์ค๋ช
: FastAPI()๋ก ์์ฑ๋ ์ธ์คํด์ค๊ฐ ์ ์ฅ๋๋ ๋ณ์๋ช
# --reload๋ ์
๋ฐ์ดํธ ๋ง๋ค reload ํ๊ฒ ๋ค๋ ์๋ฏธ
728x90
๋ฐ์ํ
'Back-end & Server > FastAPI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[FastAPI] Form (0) | 2024.02.20 |
---|---|
[FastAPI] ๋ชจ๋ธ (0) | 2024.02.20 |
[FastAPI] ๋งค๊ฐ๋ณ์ (0) | 2024.02.20 |
[FastAPI] ๋์์ฑ๊ณผ async / await (0) | 2024.02.19 |
[FastAPI] ํ์ ์ง์ , Pydantic (0) | 2024.02.19 |