반응형
FastAPI 가 가지고 있는 특징을 알아보고 기본 개념과 설치 방식에 대해서 정리했습니다.
FastAPI 란?
- Python 웹 애플리케이션 개발을 위한 웹 프레임워크
- ASGI Server 를 기반으로 작동함 (Uvicorn ASGI Server 주로 이용)
- Pydantic 과 호환되는 타입 힌팅 시스템으로 데이터 유효성 검사
- Swagger와 ReDoc 같은 API 문서화 도구와 함께 제공
ASGI란?
- Asynchronous Server Gateway Interface의 약자
- 파이썬의 표준 인터페이스로 비동기 web server를 의미함
- 기존의 WSGI(Web Server Gateway Interface)의 한계를 극복하기 위해 등장
- WSGI는 동기식으로 동작하기 때문에, 느린 I/O 작업 등이 수행될 때 전체 애플리케이션의 처리 속도가 느려지는 문제
ASGI의 특징
- 대용량의 동시 요청을 처리가능
- 높은 처리량과 낮은 지연 시간을 가진 빠른 웹 애플리케이션을 개발
- async / await 구문을 사용
- DB나 API 연동 과정에서 발생하는 대기 시간없이 CPU 가 다른 작업을 수행하는 방식
Uvicorn 이란?
- lightweight(매우 가벼운) ASGI 서버
- fastapi framework 호환되는 ASGI 타입 웹 서버
- 비동기 방식이 가능한 python web server framework(Fastapi가 대표적)와 application 간의 표준 interface를 제공함
- 배포에 별도의 준비가 필요 없음
FastAPI 설치 안내
1. 프레임워크 설치
pip install fastapi
pip install uvicorn[standard]
2. main.py 파일 생성
from fastapi import FastAPI
app = FastAPI() # 인스턴스 생성
@app.get("/") # get method로 '/'에 해당하는 생성
def root():
return {'Hello':'World!'}
3. 서버 실행
uvicorn main:app --reload
- main : 모듈명을 의미 (main.py 의 파일명 start.py 명 start:app 로 입력)
- app : 인스턴스가 담긴 변수명 ( app=FastAPI() )
- --reload : 코드가 수정되면 자동으로 재작동되는걸 의미함
서버실행후 브라우저에서 "127.0.0.1:8000" 로 웹 페이지 오픈
실행오류 Tip
uvicorn 으로 처음 웹서버를 실행할때 간혹 다음과 같은 오류가 발생할수 있다.
ERROR: Error loading ASGI app. Attribute "app" not found in module "main".
오류 메시지에도 나와 있다 시피 오류의 원인은 사실 웹서버에서 실행될때 main.py 파일을 찾지 못해서 발생해서 인데 아무리봐도 파일에는 문제가 없는 경우가 있다.
그럼 혹시 main.py 파일의 생성을 IDE 에서 아이콘을 클릭하거나 마우스를 클릭해서 생성한건 아닌가 확인해보아야 한다. uvicorn 이 툴을 통해서 생성된 파일을 인지 못하는 경우일수 있다. 그럴때는 mkdir 명령어로 폴더를 생성하고 vi 명령어로 파일을 생성한 이후 IDE 툴에서 편집해보면 해결할수 있다.
본인이 확인한 바에 의하면
마치며
FastAPI 의 특징과 간단한 설치 방법에 대해서 알아보았습니다. 다음 글에서는 데이터베이스 연동 부분에 대해서 정리해보도록 하겠습니다.
반응형
댓글