FastAPI로 이메일 로거 구축: 배경 작업 활용
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

Day 8: FastAPI에서 배경 작업 사용하기 — 이메일 로거 구축

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

FastAPI를 사용하여 비동기 작업을 처리해야 하는 백엔드 개발자

난이도: 초보자 ~ 중급자 (FastAPI 기초 지식 필요)

핵심 요약

  • BackgroundTasks는 사용자 요청에 즉시 응답하면서 백그라운드에서 작업을 수행할 수 있게 해주는 FastAPI 기능
  • 이메일 로깅 예제에서 log_email 함수를 BackgroundTasks에 등록하여 비동기 처리
  • 단순하고 가벼운 작업에 적합하며, 복잡한 작업은 Celery와 같은 작업 큐 시스템 사용 권장

섹션별 세부 요약

1. **BackgroundTasks란?**

  • 사용자 요청에 즉시 응답하고, 시간이 오래 걸리는 작업은 백그라운드에서 처리
  • 이메일 전송, 로그 기록, 이미지 처리 등에 활용 가능
  • BackgroundTasks비동기 처리를 위한 간단한 방법 제공

2. **이메일 로거 구현**

  • log_email 함수 정의: 이메일과 메시지를 email_logs.txt 파일에 기록
  • send_email 엔드포인트에서 BackgroundTasks.add_task()로 비동기 작업 추가
  • 요청이 즉시 응답되며, 백그라운드에서 로깅 작업 수행

3. **FastAPI 앱 실행 및 테스트**

  • uvicorn day8_logger:app --host 0.0.0.0 --reload --port 9000 명령어로 서버 실행
  • Swagger UI에서 /send-email/ POST 요청 보내기: 이메일과 메시지 입력
  • 즉시 JSON 응답 받고, email_logs.txt 파일에서 작업 결과 확인

4. **실제 사용 사례**

  • 환영 이메일 전송, 비밀번호 재설정, 인보이스 수신
  • 로그 기록, 이미지 압축, 보안 검사 등의 가벼운 작업 처리
  • 캐시 업데이트, 이벤트 큐잉, 보고서 생성 등 서비스 분리 및 성능 향상

5. **한계 및 권장사항**

  • CPU 집약적, 시간 소요, 재시도 필요 작업은 BackgroundTasks 대신 Celery, RQ, AWS Lambda + SQS 사용
  • BackgroundTasks단순하고 가벼운 작업에 적합하며, 지속성이나 복잡한 오류 처리는 지원하지 않음

결론

  • FastAPI의 BackgroundTasks비동기 작업을 간단하게 처리할 수 있는 도구로, 가벼운 작업에 적합
  • uvicorn day8_logger:app 명령어로 구현한 이메일 로거 예제를 통해 즉시 응답과 백그라운드 처리를 경험 가능
  • 복잡한 작업은 Celery나 AWS Lambda와 같은 작업 큐 시스템으로 대체해야 함