웹(WEB)/파이썬(Python)

[Python] FastAPI 기본, 설치

마달랭 2025. 1. 11. 23:48
반응형

개요

FastAPI는 웹 서버로 사용하기에 매우 알맞은 프레임워크이다.

특히 비동기 처리와 높은 성능을 제공하여, 고속의 웹 애플리케이션 및 API를 구축하는 데 적합하다.

 

그러나 비동기 작업을 사용할 때는 특정 고려 사항이 필요하다.

특히 트랜잭션 처리와 관련하여 오류가 발생할 수 있는 가능성이 있다.

 

FastAPI는 ASGI 기반으로 동작하는 프레임워크로, uvicorn 같은 고성능 ASGI 서버에서 실행된다.

특히 REST API와 같은 I/O 바운드 작업을 처리할 때 매우 뛰어난 성능을 발휘한다.

비동기 I/O는 서버가 여러 요청을 동시에 처리할 수 있게 해주어, 대규모 트래픽을 처리하는 데 효과적이다.

 

 

장점

async/await를 사용하여 데이터베이스, HTTP 요청 등 I/O 바운드 작업에서 비동기 I/O 작업을 효율적으로 처리한다.

Starlette(비동기 프레임워크) 위에서 동작하며, 이는 매우 높은 성능을 제공한다.

API 문서화 기능(Swagger UI)을 자동으로 생성해주며, 자동 검증 기능(Pydantic)을 제공한다.

이를 통해 API 엔드포인트를 쉽게 문서화하고 사용할 수 있다.

 

 

유의점

FastAPI와 SQLAlchemy와 같은 ORM을 함께 사용할 때는 비동기 처리와 트랜잭션을 잘 관리해야한다.

기본적으로 SQLAlchemy는 동기적으로 작동하며, 이를 비동기 방식으로 처리하기 위해서는 databases 라이브러리와 같은 비동기 ORM을 사용하는 것이 좋다.

예를 들어, Tortoise ORM은 비동기 처리에 적합한 ORM으로 사용될 수 있다.

비동기 코드가 트랜잭션을 관리할 때, 여러 스레드에서 동시에 데이터베이스를 업데이트하려고 하면 트랜잭션 충돌이 발생할 수 있다.

이 문제를 해결하려면, async with 문을 사용하여 트랜잭션을 관리하거나, 비동기 데이터베이스 세션을 별도로 사용하는 것이 좋다.

 

비동기 작업에서 SQLAlchemy 세션을 제대로 관리하지 않으면, 세션이 여러 요청 사이에 잘못 공유되어 데이터베이스 트랜잭션이 누락될 수 있다.

각 요청에 대해 별도의 세션을 생성하여 관리하는 것이 중요하다.

 

 

설치

1. FastAPI와 Uvicorn 설치

pip install fastapi uvicorn
  • FastAPI와 함께 ASGI 서버인 uvicorn을 설치한다.
  • uvicorn은 FastAPI 애플리케이션을 실행하는 데 필요한 서버이다.

2. CORS 설정

pip install fastapi[all]
  • 만약 다른 도메인에서 이 API를 호출하려면 CORS(Cross-Origin Resource Sharing)를 설정해야한다.
  • 위 명령어를 통해 CORS 설정 준비를 한다.

3. SQLAlchemy 설치

pip install sqlalchemy
  • SQLAlchmy를 통해 데이터베이스와 연동할 수 있다.
  • 자신이 사용할 DB를 추가적으로 설치해주면 된다.
728x90
반응형