728x90
반응형
목차
개요
FastAPI에서 Makfile을 사용하다 보니 꽤나 자주 사용하는 명령어들의 모음이 생겼다. 언젠가 정리해둬야겠다 싶었는데 이번 기회에 정리해보고자 한다.
1. ". env"를 사용할 수 있게 만들기
". env" 파일 프로젝트 코드 베이스 실행 간 필요한 환경변수들의 모음을 정의해 놓은 곳이다. Makefile에서도 이 환경변수를 참조해야 하는 경우가 있는데. 그럴 때 Makefile의 제일 상단에 다음과 같은 라인을 추가해 놓자.
# .env 파일이 존재할 경우 환경변수로 가져오기
ifneq (,$(wildcard .env))
include .env
export $(shell sed 's/=.*//' .env)
endif
2. uvicorn 실행하기
개인적인 스타일에 따라 명령어를 어떤 식으로 정의할 정도의 차이겠지만 필자는 보통 Makefile을 통해 FastAPI 프로젝트를 실행하도록 명령어를 셋업 해둔다.
# makefile
app.local:
uvicorn src.main:application --host 0.0.0.0 --port 8080 --reload
uvicorn 실행 시 특정 옵션을 사용하는 경우라면 다음과 같이 따로 정의해 둔다.
...
run.local.worker4:
uvicorn src:main.application --workers 4 --timeout-keep-alive 10 --log-config ./log.ini --reload
3. gunicorn 실행하기
gunicorn 도 마찬가지다.
run.gunicorn:
gunicorn src:main.application --worker-class uvicorn.workers.UvicornWorker -w 11 --keep-alive 60 --preload --bind 0.0.0.0:8000
4. docker 실행하기
docker 정도는 그냥 쉘에서 명령어로 실행하면 되지 않겠냐라고 할 수 있겠지만 Makefile을 통해서 명시적으로 드러내는 방법이 훨씬 더 낫다고 생각한다.
run.docker.infra:
sudo docker-compose -f ./.docker/docker-compose-infra.yml up -d --remove-orphans
5. SQLAlchemy를 사용한다면 sqlacodegen
SQLAlchmey의 ORM 클래스를 자동으로 생성해 주는 sqlacodegen도 makefile에 정의해 두자.
orm:
sqlacodegen mysql+pymysql://root:1234@localhost:9501/db > ./config/orm.py
6. 테스트 실행하기
locust를 이용해 로드테스트를 진행한다면 이 또한 포함이다.
load.test:
locust -f ./load-test/locustfile-issue-v1.py --host=http://127.0.0.1:8000 --processes 3
마치며
기타 다른 예제로 Linting이나 Formatting 도구도 makefile에 두는 것이 좋은 선택일 수 있다. makefile에 명령어를 기술하는 방법은 프로젝트 수행 간 필요한 명령어를 공유하자라는 용도로 사용할 것을 추천하는 바이다.
728x90
반응형
'Frame Work > FastAPI' 카테고리의 다른 글
FastAPI에 적용하는 Interface & Implements 와 DI Container (2) | 2024.11.08 |
---|---|
makefile 사용 시 환경변수 로딩 주의하기 (0) | 2024.10.27 |
[FastAPI] FastAPI MVC Pattern ! (0) | 2024.08.16 |
FastAPI의 이상한 파일 업로드 (3) | 2024.07.15 |
FastAPI, Missing boundary in multipart. (1) | 2024.06.30 |