오늘은 celery에 대해서 공부 및 어떤 특징이 있는지 알아볼거다.
Celery는 Python으로 작성된 분산 작업 큐 시스템이다.
비동기 작업실행, 실시간 작업처리, 예약된 작업 실행을 위해 사용되며 대규모 프로덕션 환경에서의 확장성과 유연성을 염두에 두고설계되었다고 한다.
- 여기서 비동기란,
- 비동기는 어떤 작업을 처리하는 동안에도 다른 작업을 멈추지 않고 계속 진행하는 방식입니다. 요청한 작업이 완료될 때까지 기다리지 않고 다음 코드를 먼저 실행하며, 서버와의 통신이나 타이머 함수처럼 결과가 나중에 돌아오는 작업에 주로 사용됩니다.(출처: 구글)
Celery는 메시지 브로커를 사용하여 작업을 큐(Task Queue)에 넣고, 워커(worker) 프로세스가 이러한 작업을 비동기적으로 처리한다.
Celery의 주요 특징
- 분산 처리: 여러 서버에 걸쳐 작업을 분산시킬 수 있어 확장성이 뛰어남
- 메시지 브로커 지원: RabbitMQ, Redis, Amazon SQS 등 다양한 메시지 브로커와 호환
- 유연성: 간단한 API를 통해 작업(task)을 정의하고, 실행하며, 관리 가능
- 결과 저장 및 모니터링: 작업 결과를 여러 백엔드(예: Redis, Database, Amazon S3)에 저장하고, Flower 등의 도구를 사용하여 작업의 진행 상황을 모니터링 가능.
- 예약 및 주기적 작업: 특정 시간에 실행되어야 하는 작업이나 주기적으로 실행되어야 하는 작업을 쉽게 스케줄링 가능.
Celery 의 주요 컴포넌트
- 클라이언트(Client)
- 브로커(Broker)
- 워커(Worker)
Celery 구성
클라이언트(Client)
작업을 생성하고 브로커에 전송하는 역할을 하며, Producer 라고도 한다.
일반적으로 웹 애플리케이션이나 스크립트가 클라이언트의 주가 된다. Celery를 사용하여 작업을 정의하고 실행을 요청한다.
브로커(Broker)
클라이언트와 워커 사이에서 메시지를 중개하며 Task Queue / Message Queue 라고도 한다.
작업메시지를 저장하고 워커에게 전달하는 역할을 한다.
워커(Worker)
브로커로부터 작업을 받아 실제로 실행하는 프로세스이며, Consumer 라고도 한다.
여러 워커를 동시에 실행하여 작업을 병렬 처리할 수 있다. 작업 결과를 백엔드에 저장할 수 있다.
Celery 작동 과정

- 클라이언트가 작업을 생성하고 브로커에 전송
- 브로커는 받은 작업을 큐에 저장
- 워커는 브로커의 큐를 모니터링하고 있다가 새 작업이 들어오면 가져감
- 워커가 작업을 실행
- 작업 결과는 결과 백엔드에 저장(설정된 경우)
- 클라이언트는 필요에 따라 결과 백엔드에서 작업 상태나 결과를 조회
오늘은 이만 마무리 하고 다음주에는 실제로 celery+redis를 활용하는 코드를 작성 및 분석 이해 하면서 일기를 써볼 예정이다.
'AI_RSS_트래픽 프로젝트' 카테고리의 다른 글
| 모르는 상태로 하는 RSS&분석&RAG 프로젝트(6) RSS & DB 선택 (0) | 2025.11.26 |
|---|---|
| 모르는 상태로 하는 RSS&분석&RAG 프로젝트(5) Celery+Redis (0) | 2025.11.25 |
| 모르는 상태로 하는 RSS&분석&RAG 프로젝트(3) Redis (0) | 2025.11.20 |
| Docker wsl, Virual Machine Platform 활성화 오류 해결 (0) | 2025.11.20 |
| 모르는 상태로 하는 RSS&분석&RAG 프로젝트(2) Redis (0) | 2025.11.14 |