[Fast API] 설치 및 실행

Yumya's record·2025년 4월 4일

SKALA

목록 보기
17/25
post-thumbnail

🏎️ Fast API 설치 및 실행 정리 🏎️

Fast API

API를 만들기 위한 파이썬 웹 프레임워크

  • Rest API 개발에 특화
  • 스키마를 명시적으로 정의해 Type Safety
  • 자동 문서 생성(Swagger, OpenAPI)
  • 보안 기능 지원(JWT)
  • ASGI 지원으로 비동기 처리 가능해 빠른 속도

API

Application Programming Interface
서비스의 요청과 응답에 대한 규칙을 의미

REST API

Representational State Transfer API
서버가 요청 간에 클라이언트 데이터를 저장하지 않는 무상태를 특징으로 한다.
서버에 대한 클라이언트 요청은 URL과 유사한 형태로 한다.
서버의 응답은 웹 페이지의 일반적인 그래픽 렌더링이 없는 일반 데이터(JSON 등)이다.

REST

클라이언트가 서버 데이터에 엑세스하는 데 사용할 수 있는 HTTP Method 집합 정의
클라이언트와 서버는 HTTP를 사용해 데이터를 교환

ASGI

Asynchronous Server Gateway Interface
Python의 비동기 웹 서버와 애플리케이션 사이의 표준 인터페이스
Python에서 웹 어플리케이션을 배포할 때 비동기 요청 처리를 위해 ASGI 서버를 사용한다.

  • 대용량 트래픽 처리에서 WSGI의 한계 보완
  • WebSocket, Long poliing과 같은 실시간 기능을 효과적으로 처리
  • HTTP/2, HTTP Protocol 처리
  • WSGI의 상위 집합 개념으로 설계되어 asgiref 라이브러리를 사용해 WSGI를 ASGI 내에서 실행
  • Send, Receive 함수를 제공해 해당 함수를 비동기적으로 호출해 이벤트 처리

Uvicorn

파이썬 전용 ASGI 서버
uvloop(이벤트 loop) + http tools(http 프로토콜 처리)를 이용해 ASGI를 구현

  • FastAPI와 함께 사용
  • 단일 프로세스로 동작
  • 파이썬 언어에 내장된 asyncio의 이벤트 루프 역할을 uvloop로 대체해 더 빠르게 동작

Virtual environment

Python 설치가 된 환경에서 진행해야 한다.
환경 설정을 쉽게 하기 위해 가상 환경에서 진행하겠다.

python3 -m venv <virtual_environment_name>

venv라는 파이썬 Module을 실행시켜 가상 환경을 만든다.

<virtual_environment_name>\Scripts\activate

Windows 기준으로 가상환경을 동작시킨다.
가상환경 안의 패키지 이름에 차이가 있을 수 있으니 일치 여부 확인하고 실행바란다.

(<virtual_environment_name>) $

정상적으로 동작되면 터미널에서 가상 환경 이름을 확인할 수 있다.

Install

$ pip install fastapi # Fast API 설치
$ pip install "uvicorn[standard]" # Uvicorn 설치
$ pip install sqlalchemy aiomysql pymysql greenlet # 데이터 베이스 연동을 위한 패키지

가상 환경에 필요한 패키지를 설치한다.

  • sqlalchemy : ORM(Object Relational Mapper)
    Python 코드로 DB 모델을 정의하고 SQL 없이 데이터 조작 가능
  • aiomysql : 비동기 MySQL 클라이언트
    async로 DB 연결 시 사용
  • pymysql : 동기 MySQL 클라이언트
    일반적인 SQLAlchemy와 함께 사용 가능
  • greenlet : SQLAlchemy의 비동기 실행을 위해 필요한 내부 스레드 컨텍스트 도구

Run

$ python3 -m uvicorn api.main:app --host 0.0.0.0 --port <port> --reload
  • main : main.py
  • app : main.py 안에 있는 app(=FastAPI)
  • --reload : 코드 변경 시 자동으로 저장되어 재시작
  • --host : 모든 접근이 가능하도록 0.0.0.0으로 지정
  • --port : 접속하길 원하는 포트 지정

정상적으로 실행된다면 localhost에서 원하는 HTTP Method 요청을 실행할 수 있다.

// Swagger UI Docs 접속 주소

http://localhost:<port>/docs

또, Swagger UI Docs에 접속할 수 있다!


Windows에서 python3 명령어가 인식하지 못하는 문제가 있었는데, 이는 환경 변수 설정 차이에 의한 문제라 python3 명령어가 인식되지 않는다면 python으로 진행하면 된다.

또, host를 0.0.0.0으로 설정했다고 그쪽으로 접속하면 안된다.
0.0.0.0은 모든 주소를 의미하며, Swagger UI에 접속하기 위해서는 localhost로 하면 된다.


참고-Fast API
참고-Fast API 특징
참고-REST API
참고-ASGI
참고-Uvicorn
참고-ASGI/Uvicorn
참고-Fast API 실행

profile
🍀 ٩(ˊᗜˋ*)و 🍀

0개의 댓글