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와 같은 작업 큐 시스템으로 대체해야 함