Backend/FastAPI

🕊️ FastAPI 데이터베이스 처리이번 게시물에서는 FastAPI에서 데이터베이스 처리를 위해 사용하는 두 개의 라이브러리에 대해서 다루어보겠다. 지난 게시물에 이어서 이번에는 ASGI인 FastAPI에서 비동기적으로 수행할 수 있는 Asyncpg에 대해서 설명하고자 하는데, 이를 위해서 동기식으로 동작하는 psycopg2에 대해 다루어볼 것이다. 아래서 내가 제시하는 get_db(), get_db_session()함수 두개는 각자 두개의 라이브러리를 활용하여 작업할 때 필요한 데이터베이스 접근 방식이다. 각자 동기/비동기적으로 접근한다. ✨ psycopg2해당 라이브러리는 "동기식"으로 작동한다.따라서, 요청을 처리하는 동안 다른 작업들은 수행하지 못하고 대기 상태에 있게 된다.  그러나, Djan..
2년전인 1학년 때, 아무것도 모르는 상태에서 FastAPI를 시작했었는데 당시 FastAPI가 Starlette 과 Pydantic을 기반으로 한 웹 프레임워크이며, ASGI방식을 사용한다는 것을 알게되었다. 🤔 그래서 ASGI방식이 뭔데? 선배가 ASGI방식임을 알려주셨는데, 그게 뭔질 알아야 또 그거말고 뭐가 있는지 알아야 이해를 할텐데 너무 답답했다. (물론 선배가 설명을 못하신게 아니라, 내가 뭐가 있는지 모르니 아무리 설명해줘도 "그게뭔데? 머좋은건데?"라는 생각만 나는 상황..)  최근에, FastAPI공부를 하면서, DB에 접근할 때 session개념이 생기던데 Asynchronous하게/Synchronous하게 접근해야할지 고민했는데 (물론 비동기가 맞다고 생각했다!! 이건 다른 글에서..
✨Build Up이번에 회사에서맡은 일을 해결하는 과정에서 Python FastAPI 서버를 구축하게 되었다. Llama3 모델을 활용하기 위해서 Kotlin + Spring 프로젝트에서는 유연하지 못한 것 같아 모델에 관련된 처리를 Python 서버에서 해결하기로 했고, 완전히 새로운 프로젝트를 만드는 상황이라 Logging과 배포에 관련된 문제를 모두 스스로 해결해야했다. 이번에는 그 과정 중에서도 로깅에 관한 문제를 해결해야한다.어플리케이션 밑에 찍히는 로그도 필요하지만 프로덕션에서는 Opensearch를 통해서 더 손쉽게 로그를 탐색할 수 있어야 하고 나중에는 DataDog을 활용하여 트래픽 분석도 할 수 있어야 한다. 그 중에서도 이번에는 Python FastAPI에서의 Logging에 대해서 ..
원래 글: https://velog.io/@stopmin/Precommit-Test 참고 관련 내용은 저번에 이미 정리해뒀다. 참고자료 이전 정리보다 조금 더 알게된 점은, 아래와 같다. 이 그림에서 딱 3단계로 진행되면 된다고 생각한다는 점이다. 수정 내역을 가져오고 내가 수정한 부분을 커밋하는 것이다. 이걸 upstream에서 바로 해도 되지만 origin을 통해서 하는게 나중에 문제가 생겼을 때 해결하기 좋다는 점이다. precommit test 홀리 몰리 뭐야 원래 안됐었는데 됐다!! 저기 근데 unstaged된거 있다고 하긴 하는데 잘못 건들면 안될 것 같아서 말았다. dev branch에 pull했다. 생각해보니깐 git add . 을 안했다. 그래서 다시 커밋했다. pull request d..
원래 글: https://velog.io/@stopmin/AID-backend-project 이번 프로젝트를 진행하면서 배웠던 점을 총합해서 정리한 게시물입니다. 이때까지 정리한 글 개발환경 설정 + 패키지 정리 fork한 repo를 origin에 push Lock 파일 & pre-commit FastAPI Pytest & Github action & Docker CloneCoding (CRUD, ToDO-list) DockerCompose & MongoDB Precommit Test CRUD vs AID_Web project SQLAlchemy 1. 개발환경 설정 + 패키지 정리 Pyenv: 다양한 버전의 파이썬을 관리하는데 사용되었다. Pipenv: 가상환경을 사용하기 위해 사용되었다. 이때 pipf..
원래 글: https://velog.io/@stopmin/DockerCompose-MongoDB 🤔 Docker Compose란 docker compose는 여러 개의 docker container를 모아서 관리하기 위한 툴이다. 웹 서비스는 일반적으로 프론트엔드 서버, 벡엔드 서버, 데이터베이스 서버로 구성되기 때문에 각 서버를 docker container로 연결하여 동작시키고 docker compose를 사용하여 해당 컨테이너들을 관리하는 것이다. 사용 방법 각각의 컨테이너의 Dockerfile를 작성한다(기존에 있는 이미지를 사용하는 경우는 불필요). docker-compose.yml를 작성하고, 각각 독립된 컨테이너의 실행 정의를 한다(경우에 따라는 구축 정의도 포함). "docker-compo..
지미닝
'Backend/FastAPI' 카테고리의 글 목록