Python/Today
셀러리(Celery)
DGeon
2025. 9. 5. 13:20
1. 셀러리란?
- 비동기 작업 처리(Asynchronous Task Processing) 및 분산 처리(Distributed Task Queue) 를 위한 파이썬 라이브러리
- 웹 서버에서 오래 걸리는 작업을 백그라운드로 넘겨 실행하게 함
- 즉, 웹 서버는 빠르게 응답하고, 무거운 작업은 다른 워커가 대신 처리
2. 셀러리의 핵심 구성 요소
| 구성 | 요소 | 설명 |
| Producer | 작업을 생성하고 Broker에 전달 | 웹 서버(Flask, Django 등) |
| Task | 실행할 작업(함수) | 이메일 전송, 이미지 처리 |
| Broker | 작업을 저장하고 전달하는 메시지 큐 | Redis, RabbitMQ |
| Worker | Broker에서 Task를 가져와 실행 | celery -A tasks worker |
| Result Backend | 작업 실행 결과를 저장하는 저장소 | Redis, DB, Memcached |
3. 동작 구조
- 사용자가 웹 서버에 요청 (예: "회원가입 완료 메일 보내기")
- 서버는 메일 전송 작업을 Task 로 만들어 Broker(Redis 등)에 전달
- 대기 중이던 Worker 가 Broker에서 작업을 꺼냄
- Worker가 작업을 실행 (메일 전송 완료)
- 결과가 필요하다면 Result Backend 에 저장
4. 주요 장점 & 단점
| 구분 | 내용 |
| ✅ 장점 | - 웹 서버 부담 감소 (비동기 처리) - 여러 서버에서 동시에 작업 처리 가능 (확장성) - 스케줄링 가능 (정해진 시간마다 실행) - 대규모 데이터 처리에 유용 |
| ❌ 단점 | - Redis/RabbitMQ 같은 외부 인프라 필요 - 셋업과 운영 복잡도 증가 - 작은 프로젝트에서는 오버엔지니어링 될 수 있음 |