본문 바로가기
웹/백엔드

[Django] celery와 celery-beat란?

by 보안매크로 2024. 7. 1.
728x90

Celery와 Celery Beat는 모두 비동기 작업 큐를 관리하고 예약된 작업을 처리하는 데 사용되지만, 그 역할과 기능은 다릅니다. 아래에 각자의 역할과 차이점을 설명하겠습니다.

Celery

Celery는 분산 작업 큐를 관리하고 실행하는 프레임워크입니다. 주로 비동기 작업을 관리하고 실행하는 데 사용됩니다. Celery는 다음과 같은 작업을 수행합니다:

  • 작업 정의: 다양한 비동기 작업을 정의하고 등록할 수 있습니다.
  • 작업 큐 관리: 작업을 큐에 넣고, 작업자(worker)가 이를 처리할 수 있도록 합니다.
  • 작업 실행: 작업자가 작업을 실행하고 결과를 반환합니다.
  • 결과 저장: 작업 결과를 다양한 백엔드(예: Redis, RabbitMQ, 데이터베이스 등)에 저장합니다.

Celery Beat

Celery Beat는 Celery와 함께 사용되는 스케줄러입니다. 주기적으로 실행되어야 하는 작업을 예약하고 관리합니다. Celery Beat는 다음과 같은 작업을 수행합니다:

  • 작업 예약: 주기적으로 실행되어야 하는 작업을 예약합니다. 예를 들어, 매일 오전 9시에 특정 작업을 실행하도록 예약할 수 있습니다.
  • 스케줄 관리: 작업 스케줄을 관리하고, 주어진 일정에 따라 작업을 큐에 넣습니다.
  • 스케줄 업데이트: 동적으로 스케줄을 업데이트할 수 있습니다.

주요 차이점

  1. 기능
    • Celery: 비동기 작업을 정의하고 실행하는 데 중점을 둡니다.
    • Celery Beat: 주기적으로 실행되어야 하는 작업을 예약하고 관리하는 데 중점을 둡니다.
  2. 사용 방식
    • Celery: 다양한 비동기 작업을 실행하기 위해 사용됩니다.
    • Celery Beat: Celery와 함께 사용되어 주기적인 작업을 스케줄링하고 큐에 넣습니다.
  3. 독립 실행
    • Celery: Celery 작업자(worker)로 독립적으로 실행됩니다.
    • Celery Beat: Celery Beat 스케줄러로 독립적으로 실행되며, Celery 작업자와 함께 동작합니다.
  4. 요약

간단히 말하면, Celery는 실제 동작을 하는 친구이고, Celery Beat는 실제 동작하는 친구의 스케줄을 관리해준다.

728x90