Flower는 Celery의 작업 상태를 실시간으로 모니터링할 수 있는 웹 기반 대시보드이다.
Celery + Redis를 사용하는 구조에서 유용하다.
왜 그럴까?
Redis는 Task 상태를 저장하지 않기 때문에, Flower와 함께 쓰면 Redis 브로커에 실시간 연결되어 상태 추적을 가능하게 해주기 때문이다.
- Redis는 브로커 역할만 한다(메시지 큐잉).
- Task 실행/상태/결과는 워커 내부는 결과 백엔드에만 있다.
- 상태 추적하려면 별도의 도구가 필요하다.
여기서 Flower는 브로커 감시, Task 상태 추적, 워커 상태 감시, 수동 제어의 역할을 한다.
- 브로커 감시: Redis 큐 상태 확인
- Task 상태 추적: 성공, 실패, 재시도 등 상태를 실시간으로 확인
- 워커 상태 감시: 워커별 작업 수, Pool 상태, 메모리 등 확인
- 수동제어: 워커 재시작, 작업 중단, Autoscale 조절 가능
Flower의 접속 주소
http://localhost:5555
또는 http://127.0.0.1:5555
나는 Docker에서 컨테이너로 실행시켰기 때문에 먼저 docker-compose up --build
를 해주었다.
Flower 주요 메뉴
1. Workers 탭
- Celery 워커(작업자)의 상태를 보여줌

- Name: 워커 이름(컨테이너 ID로 시작할 수 있음)
- Status: online/offline 여부
- Processed: 처리한 작업 수
- Active: 지금 처리 중인 작업 수
- Load average: 시스템 부하(서버 부하 테스트에 유용)
2. Tasks 탭
- 가장 많이 보는 탭으로 Celery가 처리한 작업들의 이력과 현재 상태를 확인 가능

- Name: 태스크 이름
- Args: 전달된 인자
- State: 상태
- Received/Started/Succeeded: 시간 기록
- Runtime: 걸린 시간
- Retries: 재시도 횟수

3. Broker 탭
- 현재 Redis 브로커에서 큐 상태를 실시간 확인할 수 있는 곳
- 실시간성이 빠르면 비어있을 수 있음

- Queue: 현재 Celery 큐 이름
- Messages: 큐에 남아있는 작업 수
- Unacked: 처리 중인 태스크 수(워커가 아직 완료 응답 안 한 것)
- Ready: 대기 중인 작업 수(처리 전 상태)
- Consumers: 큐를 소비하는 워커 수
- Idle since: 워커가 마지막으로 메시지 처리한 이후 경과 시간
Autoscaling
Autoscaling은 워커의 프로세스 수를 자동으로 늘려 병렬로 작업을 처리하기 때문에 보다 신속하게 처리할 수 있게 한다.
Flower에서 해당 기능을 사용하기 위해서는 celery worker에 '--autoscale=10,1' 과 같은 설정을 해주어야 한다.
Autoscaling은 prefork 풀에서 동작하므로, --pool=solo에서는 비활성화된다. 설정에 혹여나 --pool-solo가 되어있다면 삭제시켜야 한다(그렇지 않으면 계속 ValueError가 발생할 수 있다).