Celery와 FastAPI - 3
·
프로그래밍 언어/파이썬
이번에는 테스트와 프로젝트 스케일 확장을 쉽게하기 위해, factory patter으로 리팩토링 해보겠습니다. 팩토리 패턴이란? 디자인 패턴중의 하나인 팩토리(Factory) 패턴은 객체 생성 처리를 서브 클래스에 위임하여, 객체 생성을 위한 인터페이스를 정의하는데 목적이 있습니다. 즉, 객체를 생성하는 코드와 사용하는 코드를 분리하여, 클라이언트가 특정 클래스의 인스턴스를 직접 사용하지 않고도 필요한 객체를 얻을 수 있도록 하는 생성 패턴입니다. 목표 FastAPI 앱 인스턴스 초기화를 위해 애플리케이션 팩토리 생성 애플리케이션 팩토리 패턴과 작동하도록 Celery 설정 SQLAlchemy와 Alembic을 사용하여 데이터베이스 변경 사항 관리 App factory 'project'라는 ..
Celery와 FastAPI - 2
·
프로그래밍 언어/파이썬
이번 글의 목표 FastAPI로 Celery 설정 하기 Python Shell에서 Celery 작업 실행 하기 Flower로 Celery 앱 모니터링 하기 Redis 설정 레디스를 OS에 직접 설치하거나 Docker를 이용하여 설치 및 실행 할 수 있습니다. Docker docker run -p 6379:6379 --name some-redis -d redis Docker Hub에서 Redis docker 이미지가 다운로드 되어서 포트 6379로 백그라운드 작업으로 실행됩니다. 아래 명령어를 통해서 레디스가 실행중인지 확인 할 수 있습니다. docker exec -it some-redis redis-cli ping # PONG Celery 설정 1단계 : FastAPI 앱에서 task message를 m..
FastAPI를 이용한 TDD 개발 - 6
·
프로그래밍 언어/파이썬
TDD 를 이용하여서 3개의 새로운 endpoint를 RESTful 개발로 진행하겠습니다. /summaries GET READ get all summaries /summaries/:id GET READ get a single summary /summaries POST CREATE add a summary 각각의 엔드포인트에서 1. 테스트를 작성합니다. 2. 테스트 코드가 실패하는 것을 확인합니다.(레드) 3. 테스트 코드가 통과 되도록 코드를 작성합니다(그린) 4. 리팩토링합니다. Post Route app 디렉토리 아래 api 디렉토리 아래 summaries.py 모듈을 작성하겠습니다. # project/app/api/summaries.py from fastapi import APIRouter, HTT..
FastAPI를 이용한 TDD 개발 - 5
·
프로그래밍 언어/파이썬
App Structure 테스트가 잘 수행 되었면 앱을 리팩터링하고 FastAPI의 APIRouter, 새로운 데이터베이스 초기화 함수 및 pydantic 모델을 추가해 보겠습니다. API라우터 먼저 "app" 폴더에 "api"라는 새 폴더를 추가합니다. 새로 생성된 폴더에 __init__.py 파일을 추가합니다 . 이제 경로를 project/app/api/ping.py/ping 라는 새 파일로 이동할 수 있습니다 . # project/app/api/ping.py from fastapi import APIRouter, Depends from app.config import get_settings, Settings router = APIRouter() @router.get("/ping") async def..