[FastAPI] 개발 환경 구축

귤티·2024년 5월 7일
0

FastAPI

목록 보기
1/10

virtualenv를 사용한 개발 환경 구축

일반적으로 파이썬 애플리케이션은 가상 환경을 사용해 개발된다. 가상 환경에서 애플리케이션을 개발하면 특정 패키지를 시스템에 전역으로 설치하지 않아도 된다. 또한 서로 다른 애플리케이션을 동시에 개발할 때 발생할 수 있는 충돌을 피할 수 있다.

가상 환경 생성

Python3을 설치하면 기본으로 표준 라이브러리의 venv 모듈이 함께 설치되는데 이 모듈이 가상 환경을 생성한다. 다음 명령을 사용하여 todos라는 폴더를 만들고 이 폴더 안에 가상 환경을 생성해보자.

mkdir todos && cd todos
python3 -m venv venv

venv 모듈은 가상 환경을 설치할 폴더명을 인수로 지정한다.(즉 두 번째 venv는 가상 환경으로 사용할 폴더명이다.) 생성된 가상 환경 폴더(venv)에는 파이썬 인터프리터가 설치된 lib 폴더와 가상 환경 내에서 상호 작용(가상 환경 활성화/비활성화 등)이 필요한 파일을 저장하는 bin 폴더가 있다.

가상 환경 활성화/비활성화

활성화:

source venv/bin/activate

가상 환경이 활성화되면 해당 환경 내에 있는 파이썬 인터프리터와 패키지를 기본으로 사용한다.
가상환경이 제대로 활성화 되었다면 venv라는 가상 환경 폴더명이 프롬프트 앞에 표시된다.

비활성화:

deactivate

pipenv 또는 poetry으로도 가상 환경을 생성하고 애플리케이션의 의존 라이브러리를 관리할 수 있다.

pip를 사용한 패키지 관리

pip를 사용하면 패키지 설치 과정을 자동화할 수 있다. pip는 파이썬 퍀키지 관리 도구이다.

pip 설치

python3 -m pip list

명령을 실행하면 설치된 패키지 목록이 표시된다.

만약 명령을 실행했는데 pip이 없거나 오류가 발생한다면 pip 문서의 안내에 따라 pip을 설치하면 된다.

pip의 기본 명령

맥이나 리눅스 등 유닉스 기반 운영체제에서는 전역 패키지 설치를 위해 sudo 키워드를 사용해야할 수도 있다.

pip install fastapi

패키지 제거:

pip uninstall fastapi

현재 프로젝트에 설치된 모든 패키지 목록을 파일로 저장하려면 다음과 같이 freeze 명령과 > 연산자를 사용하면 된다:

pip freeze > requirements.txt

> 연산자는 왼쪽 명령의 실행 결과를 오른쪽 파일에 저장한다. 여기서는 pip freeze가 반환하는 패키지 목록이 requirements.txt 파일에 저장된다.

requirements.txt 같은 텍스트 파일을 사용해서 필요한 패키지를 일괄 설치할 수 있다.

pip install -r requirements.txt

이 명령은 배포할 때 주로 활용된다.

도커 설정

오늘날 애플리케이션은 여러 계층(데이터베이스, 웹 서버 등)으로 구성된다. 따라서 애플리케이션을 쉽게 배포하려면 모든 구성 요소를 하나로 묶어야 한다. 여기서는 도커를 사용해 애플리케이션 계층을 단일 이미지로 컨테이너화한다. 이렇게 하면 애플리케이션을 클라우드나 로컬에 쉽게 배포할 수 있다.

도커파일(Dockerfile)과 도커 구성 파일(Docker-compose)을 사용하면 애플리케이션 이미지를 업로드하거나 공유할 필요가 없다. 도커파일을 사용해서 새 버전의 애플리케이션을 바로 구축하고 도커 구성 파일을 사용해서 배포할 수 있다. 애플리케이션 이미지는 도커 허브(Docker Hub)에 저장(push)했다가 다시 추출(pull)해서 사용할 수 있다.

도커를 설치하려면 먼저 웹 사이트에서 도커 데스크톱을 다운로드해야 한다.

도커파일

애플리케이션 이미지의 구성 방법을 정의한다.

FROM python:3.8
WORKDIR /usr/src/app //작업 디렉터리를 설정
ADD . /usr/src/app //현재 로컬 디렉터리의 파일을 컨테이너의 작업 디렉터리로 복사
CMD ["python", "hello.py"] //명령을 실행

도커파일을 사용해서 getting_started라는 태그를 가진 애플리케이션 이미지를 생성해 보자.

docker build -t getting_started .

도커파일이 현재 디렉터리에 없다면 명령 실행 시 다음과 같이 경로를 명시해야 한다.

docker build -t getting_started ch01/Dockerfile

컨테이너 이미지가 생성됐다면 다음 명령으로 실행하면 된다.

docker run getting_started

간단한 FastAPI 애플리케이션 개발

todos 폴더에 애플리케이션에 필요한 의존 라이브러리와 패키지를 설치한다.

  • fastapi: 애플리케이션을 구축하기 위해 필요한 프레임워크
  • uvicorn: 애플리케이션을 실행하기 위한 비동기 방식 서버 게이트웨이 인터페이스

설치에 앞서 프로젝트 폴더(todos)에서 개발 환경(가상 환경)을 활성화

source venv/bin/activate

다음 명령을 사용해 의존 라이브러리를 설치

pip install fastapi uvicorn

이제 api.py라는 파일을 만들어 FastAPI의 새 인스턴스를 생성한다.

from fastapi import FastAPI

app = FastAPI()

app 변수에 FastAPI를 초기화해서 라우트(route)를 생성할 수 있다.
웰컴 라우트를 만들어보자:
데코레이터(decorator)를 사용해 처리 유형을 정의하고 라우트가 호출됐을 때 실행할 처리를 함수로 작성한다.
다음 코드는 GET 유형의 요청을 받아서 환영 메시지를 반환하는 "/" 라우트를 만든다.

@app.get("/")
async def welcome() -> dict:
	return{
    	"message": "Hello World"
    }

이제 uvicorn을 사용해 애플리케이션을 시작해보자

uvicorn api:app --port 8000 --reload

uvicorn을 실행할 때 지정하는 인수

  • file:instance: FastAPI 인스턴스가 존재하는 파이썬 파일과 FastAPI 인스턴스를 가지고 있는 변수를 지정
  • --port PORT: 애플리케이션에 접속할 수 있는 포트 번호를 지정
  • --reload: 선택적 인수, 파일이 변경될 때마다 애플리케이션을 재시작

애플리케이션이 제대로 실행되고 있는지 새 터미널을 열어 테스트:

curl http://localhost:8000/

환영 메시지를 콘솔에서 볼 수 있다.

profile
취준 진입

0개의 댓글

관련 채용 정보