[python] Celery의 작업 스케쥴링을 위한 CRON 표현식 작성 방법은 어떻게 되는가?

Celery는 Python에서 사용되는 대표적인 비동기 작업 큐이며, 작업 스케쥴링을 위해 CRON 표현식을 사용할 수 있습니다. CRON 표현식은 일정한 주기로 작업을 실행하기 위해 사용되며, Celery에서도 이를 활용할 수 있습니다.

Celery에서 CRON 표현식을 사용하기 위해서는 celery beat라는 스케쥴러를 설정해야 합니다. 이 스케쥴러는 Celery 애플리케이션과 함께 실행되며, 정의된 CRON 표현식에 따라 작업을 실행합니다.

CRON 표현식은 다음과 같은 형식을 갖춥니다:

*    *    *    *    *    command to be executed
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 요일 (0 - 6) (일요일 = 0 또는 7)
|    |    |    +---------- 월 (1 - 12)
|    |    +--------------- 날짜 (1 - 31)
|    +-------------------- 시간 (0 - 23)
+------------------------- 분 (0 - 59)

각 필드는 숫자, 별표(*), 콤마(,)와 하이픈(-)으로 구성됩니다. 숫자는 특정한 값을 의미하며, 별표는 해당 필드의 모든 값을 의미합니다. 콤마는 필드의 여러 값을 지정하는데 사용되며, 하이픈은 범위를 지정하는데 사용됩니다.

예를 들어, 매주 월요일 오전 9시에 작업을 실행하고 싶다면, 다음과 같이 CRON 표현식을 작성할 수 있습니다:

from celery.schedules import crontab

CELERY_BEAT_SCHEDULE = {
    'weekly_task': {
        'task': 'myapp.tasks.my_task',
        'schedule': crontab(hour=9, minute=0, day_of_week=1),
    },
}

위의 예제에서는 myapp.tasks.my_task라는 작업을 매주 월요일 오전 9시에 실행하도록 스케쥴링한 것입니다.

Celery에서는 많은 종류의 스케줄링을 CRON 표현식 이외에도 제공합니다. 자세한 내용은 Celery 문서를 참고하시기 바랍니다.

참고 문서: