FastAPI
•
FastAPI는 현대적인 고성능 웹 프레임워크로, Python을 기반으로 한다.
•
FastAPI는 빠른 개발 속도와 높은 성능을 제공하며, 특히 비동기 처리를 지원하여 효율적인 애플리케이션 개발에 유리하다.
주요 특징
1.
고성능
•
FastAPI는 ASGI(Asynchronous Server Gateway Interface) 표준을 따르며, Uvicorn 또는 Hypercorn과 같은 고성능 ASGI 서버와 함께 사용된다.
•
비동기 I/O를 활용하여 높은 처리량과 낮은 대기 시간을 제공한다.
2.
자동화된 데이터 검증 및 문서화
•
FastAPI는 Pydantic을 사용하여 데이터 검증을 자동화한다.
•
OpenAPI와 JSON Schema를 자동으로 생성하여, API 문서를 쉽게 생성하고 유지할 수 있다.
3.
빠른 개발 속도
•
간결하고 직관적인 코드를 작성할 수 있어 개발 속도가 빠르다.
•
타입 힌팅을 사용하여 IDE의 자동 완성 기능을 최대한 활용할 수 있다.
4.
비동기 지원
•
Python의 비동기 기능(Async/Await)을 완벽히 지원하여, 비동기 처리가 필요한 애플리케이션에 적합하다.
5.
보안
•
OAuth2, JWT 등의 인증 시스템을 쉽게 통합할 수 있다.
•
CORS, CSRF 등의 보안 기능도 쉽게 설정할 수 있다.
설치 및 기본 사용 예시
•
FastAPI를 설치하려면 pip를 사용한다.
pip install fastapi uvicorn
Shell
복사
•
FastAPI 애플리케이션을 작성하는 기본 예시는 다음과 같다
# main.py
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: str = None):
return {"item_id": item_id, "q": q}
Python
복사
•
이 애플리케이션을 Uvicorn을 사용하여 실행하려면 다음 명령어를 사용한다.
uvicorn main:app --reload
Shell
복사
•
위 명령어는 main.py 파일의 app 객체를 실행하고, 코드 변경 시 자동으로 서버를 재시작한다.
API 문서
•
FastAPI는 자동으로 API 문서를 생성한다.
•
서버를 실행한 후 브라우저에서 다음 URL로 접속할 수 있다:
◦
Swagger UI: http://127.0.0.1:8000/docs
◦
Redoc: http://127.0.0.1:8000/redoc
고급 기능
•
FastAPI는 다음과 같은 고급 기능도 제공한다.
◦
경로 작업(Path Operations): 다양한 HTTP 메서드(GET, POST, PUT, DELETE 등)를 지원하는 경로 작업을 정의할 수 있다.
◦
의존성 주입: 의존성 주입을 통해 코드의 재사용성과 테스트 용이성을 높일 수 있다.
◦
백그라운드 작업: 백그라운드에서 실행할 작업을 정의하고 관리할 수 있다.
◦
웹소켓: 실시간 통신을 위한 웹소켓을 쉽게 구현할 수 있다.
요약
•
FastAPI는 현대적인 웹 애플리케이션 개발을 위한 강력한 도구로, 높은 성능과 편리한 개발 경험을 제공한다.
•
특히 비동기 처리와 자동화된 데이터 검증 및 문서화 기능이 뛰어나, 빠르고 효율적인 애플리케이션 개발이 가능하다.
Uvicorn
•
Uvicorn은 다음과 같은 특징을 가지고 있다.
1.
ASGI 서버: Uvicorn은 ASGI(Asynchronous Server Gateway Interface)를 구현한 서버로, 비동기 Python 웹 프레임워크(예: FastAPI, Starlette)를 실행하는 데 사용된다. ASGI는 WSGI의 비동기 버전으로, 비동기 처리를 지원하여 더 높은 성능을 제공한다.
2.
고성능: Uvicorn은 Cython과 함께 구현되어 매우 빠른 속도를 자랑한다. 이는 높은 처리량과 낮은 대기 시간을 요구하는 애플리케이션에 적합하다.
3.
간편한 사용: 설정과 사용이 간편하며, 개발 및 배포 환경에서 모두 사용할 수 있다.
주요 특징
•
HTTP/2 및 WebSocket 지원: HTTP/2와 WebSocket을 지원하여 실시간 애플리케이션 개발에 유리하다.
•
자동 리로딩: 개발 중 코드 변경 시 서버를 자동으로 재시작하여 개발 편의성을 높인다.
•
고성능 비동기 처리: 비동기 I/O를 효율적으로 처리하여 고성능 애플리케이션을 구축할 수 있다.
•
유연성: 다양한 Python 웹 프레임워크와 함께 사용할 수 있으며, ASGI 표준을 따르기 때문에 호환성이 좋다.
설치 및 사용 예시
•
Uvicorn은 pip를 통해 설치할 수 있다.
pip install uvicorn
Shell
복사
•
Uvicorn을 사용하여 FastAPI 애플리케이션을 실행하는 예시는 다음과 같다.
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
Python
복사
•
위와 같은 FastAPI 애플리케이션을 Uvicorn으로 실행하려면 다음 명령어를 사용한다:
uvicorn main:app --reload
Shell
복사
•
-reload 옵션은 코드 변경 시 서버를 자동으로 재시작하는 개발 모드 옵션이다.
요약
•
Uvicorn은 Python 비동기 웹 프레임워크를 위한 고성능 ASGI 서버로, 간편한 설정과 높은 성능을 제공한다.
•
FastAPI, Starlette 등과 함께 사용하여 현대적인 비동기 웹 애플리케이션을 개발하는 데 적합하다.
안녕하세요
•
한국전자기술연구원 김영광입니다.
•
관련 기술 문의와 R&D 공동 연구 사업 관련 문의는 “glory@keti.re.kr”로 연락 부탁드립니다.
Hello 
•
I'm Yeonggwang Kim from the Korea Electronics Research Institute.
•
For technical and business inquiries, please contact me at “glory@keti.re.kr”