카테고리 없음

Flower의 개념

코코무 2025. 3. 31. 17:12

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가 발생할 수 있다).