Search

240706_1306_[Python] FastAPI & Uvicorn

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”