데브허브 | DEVHUB | Could Django Actually Kill Celery? (you may want this)Could Django Actually Kill Celery? (you may want this)
- Django 6.0에 새로운
tasks 프레임워크가 도입되어 백그라운드 작업을 위한 표준화된 내장 방식을 제공합니다. 🚀
- 이 프레임워크는 이메일 전송이나 데이터 처리와 같이 요청-응답 주기 외부에서 간단한 작업을 오프로드하여 사용자 대기 시간을 줄이는 데 중점을 둡니다. ⏳
- Celery와 같은 복잡한 도구 없이도 대부분(약 80%)의 앱에서 간단한 작업 오프로드 요구사항을 충족할 수 있습니다. ✨
tasks는 플러그형 API 레이어로 설계되어, Django는 작업 선언 및 큐잉 방식을 정의하고 실제 실행 및 저장은 백엔드나 서드파티 앱이 담당합니다. 🧩
@task 데코레이터, enqueue 함수, TaskResult 추상화, takes_context, queue_name, priority 설정 등의 핵심 기능을 제공합니다. 🛠️
- 의도적으로 내장 워커, 재시도 시스템, 스케줄러, 체인 기능은 포함되어 있지 않으며, 이는 백엔드나 외부 도구에서 구현해야 합니다. 🚧
- 작업 인자와 반환 값은 JSON 직렬화가 가능해야 하며, 이 부분의 부족함은 커뮤니티 어댑터로 보완될 예정입니다. 💾
on_commit 훅을 통해 데이터베이스 커밋이 완료된 후에만 작업을 큐에 추가하여 데이터 일관성을 보장합니다. ✅
- 향후에는 작업 생명주기 모니터링, Redis 및 RQ용 백엔드 개선, Celery와 같은 라이브러리 연결 브릿지 등에 대한 논의가 활발합니다. 🌐
- Django 5에서도 백포트 버전을 통해 이 API를 미리 사용해볼 수 있어, Django 6으로의 마이그레이션 중에도 활용 가능합니다. 🔄