본문 바로가기

728x90

Frame Work

(43)
FastAPI에서 사용하는 Makefile CheetSheet 목차 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스 개요 FastAPI에서 Makfile을 사용하다 보니 꽤나 자주 사용하는 명령어들의 모음이 생겼다. 언젠가 정리해둬야겠다 싶었는데 이번 기회에 정리해보고자 한다. 1. ". env"를 사용할 수 있게 만들기". env" 파일 프로젝트 코드 베이스 실행 간 필요한 환경변수들의 모음을 정의해 놓은 곳이다. Makefile에서도 이 환경변수를 참조해야 하는 경우가 있는데. 그럴 때 Makefile의 제일 상단에 다음과 같은 라인을 추가해 놓자.# .env 파일이 존재할 경우 환경변수로 가져오기ifneq (,$(wildcard .env)) include .env export $(shell sed 's/=.*//' .e..
FastAPI에 적용하는 Interface & Implements 와 DI Container 목차 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스 지난글- 2024.11.08 - [Frame Work/FastAPI] - FastAPI에 적용하는 Interface & Implements개요지난 글에서는 생각과 설명의 나열이 주를 이뤘다. 또한 코드 예제까지 포함하면 긴 호흡의 글이 작성될 것 같아 코드 예제를 포함하지 않았다. 이 글은 지난 글의 “Enhancement”의 하위 주제인 “interface & implement”와 “DI Conatiner”에 대한 설명과 개인 경험과 그에 대한 생각을 추가하면서 실제 적용한 코드 예시까지 기록해보고자한다. Python에 Interface가 필요한가?만약 어떤 새가 오리처럼 걷고, 헤엄치고, 꽥꽥 거리는 소리를 낸다면 나..
makefile 사용 시 환경변수 로딩 주의하기 목차 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스 개요 Python으로 Project 진행 시 makefile을 Root Directory에 위치시켜둔다. 이 makefile 은 Project에 관한 명령어를 모아둔 것으로 주로 Project에서 어떤 명령어들을 사용하는지를 나열해놓는 용도로만 사용하고 있다. 사용해야될 명령어들을 미리 정의해둠으로써 많은 편의를 누리고 있는데 최근 makefile을 사용하면서 사소한 문제를 겪었다. makefile은 별 문제가 없는 이상 계속 사용하게 될 것이라. 겪었던 문제를 기록해두려고한다.  1. 무엇이 문제인가?문제의 현상은 환경변수에 올라간 값이 dotenv를 통해 불러와 Python 변수에 할당하고 난 후 두 값이 불일치되는 ..
[FastAPI] FastAPI MVC Pattern ! 목차 ">목차 개요 근 7~8개월간 쭉 FastAPI를 사용해왔다. 주로 사이드 프로젝트나 회사에서 FastAPI로 개발 시 코드 베이스를 어떻게 구성하면 좋을까에 대한 고민들을 거쳤다. 익숙한 것이 MVC 이기 때문에 이를 기반으로 FastAPI를 다룰 때는 계속 MVC라는 밑그림 위에서 코드 베이스를 구성해 나갔는데 경험이 쌓이다보니 FastAPI로 MVC를 만들 때 기초적인 밑그림 정도는 이렇게 잡아놔야지라는 개인적인 스타일이 생겼다. 이 글에 작성된 내용과 방식이 옳든 틀리든 FastAPI로 개발하면서 만들었던 이 "개인적인 스타일"에 대한 정리와 필자 개인의 생각을 남기려 한다. 1.  FastAPI에서 MVC를?!FastAPI에서 MVC를 사용하면서 들었던 개인적인 의견은 FastAPI..
FastAPI의 이상한 파일 업로드 목차 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스 개요 최근 FastAPI를 이용해 파일 업로드 기능을 다뤄야 했다. 대용량 파일 업로드 처리나 분산 파일 업로드 서버를 구현하는 게 아닌 "단순" 파일 업로드가 가능한 API만 구현하면 끝인 상황이었다.  FastAPI 문서나 구글 검색을 참조해 이리저리 구현하던 도중에 Type Hinting을 통해 생성되는 Swagger 문서에서 특징을 발견할 수 있었는데 이 글은 겪었던 그러한 특징에 대해 정리한 글이다.  1.  단건 파일업로드 처리1.1 UploadFile 객체와 bytes를 이용한 파일 업로드 예제다음은 FastAPI 문서에서 제공되는 파일업로드를 구현하기 위한 기본 코드 예제이다. from fastapi imp..
FastAPI, Missing boundary in multipart. 목차 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스 개요 FastAPI는 파일 업로드 API를 만들었다. Swagger에서 실제로 API를 호출하여 동작도 체크하고 테스트 코드를 이용해 파일이 업로드되는지 검증도 해봤지만 Front(React)에서 파일 업로드 API 호출 시 "Missing boundary in multipart"라는 Message를 응답받는다는 결과를 알려주었다. 원인이 무엇이며 어떻게 해결할 수 있을까? 1.  Missing Boundary"개요"에서 언급한 것 같이 Swagger를 이용해 직접 API를 사용함으로써 동작을 검증하고 테스트 코드를 작성해 파일 업로드 되는지 테스트했다. 기능이 무리 없이 동작하니 개발 서버에 배포했다. 그러나 Front..
[FastAPI] Pydantic BaseModel로 Form 데이터 처리하기 HTML 삽입 미리보기할 수 없는 소스 개요 어째선지 FastAPI의 문서에는 Pydantic의 BaseModel을 이용해서 Form 데이터를 처리하는 경우의 코드 예제는 보이지 않는다. 다양한 시도 끝에 BaseModel을 이용해 Form 데이터를 처리할 수 있는 방법을 찾았지만 꼼수를 부린 방법이라 그런지 FastAPI Log에서 다음과 같은 Warning 이 나고 있음을 발견했다. 해당 Warning을 인지하고 Pydantic의 BaseModel에서 Form 데이터를 처리할 수 있는 다른 방법을 조사한 뒤 해결했고 이 포스팅은 그 과정에 대한 것이다. 1. PydanticJsonSchemaWarning 먼저 "개요"에서도 언급했듯 PydanticJsonSchemaWarning을 발견하게 된 경위이다..
[FastAPI] Depands와 Dependency-injector DI 비교해보기 HTML 삽입 미리보기할 수 없는 소스 개요 최근에는 SQLAlchemy의 session을 이용해 프로젝트 구조를 잡는 편이다. FastAPI가 구동되는 단계에서 DI를 이용해 전역적으로 사용할 Session을 설정하는 방식으로 구성하는데 크게 3가지 정도의 방법을 이용해 Session DI를 구성할 수 있었다. SQLAlchemy의 Session으로 DI를 사용할 경우 어떤 식으로 DI를 시도했는지에 대한 내용 정리와 각 구성별 LoadTest 결과를 기록하려 한다. 테스트 셋업 FastAPI에서는 Too Many Open File 이슈가 발생할 수 있다. ulimit 설정은 soft 설정을 5012 정도로 잡았다. locust를 이용해 테스트를 진행했으며 RPS 가 어느 경우에 더 높은 지를 보는 게..

728x90
반응형