Celery 주기적 작업의 다음 실행 시간 계산 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- Celery 주기적 작업 스케줄링을 구현하는 Python 개발자
- 타이밍 계산을 위해 croniter 라이브러리를 잘못 사용한 경험이 있는 개발자
- Celery 내장 기능을 잘 모르는 중급 개발자
핵심 요약
- Celery의
crontab
객체는 cron 문자열이 아니므로croniter
와 호환되지 않음 remaining_delta(last_run)
메서드를 사용하여 다음 실행 시간 계산 가능crontab
객체의 내부 필드(._orig_hour
,._orig_minute
)를 직접 파싱하는 것은 비효율적
섹션별 세부 요약
1. 문제 정의 및 croniter 사용 시도
- Celery
crontab(hour=12, minute=0)
스케줄의 다음 실행 시간 계산이 필요 croniter
라이브러리 사용 시AttributeError: 'crontab' object has no attribute 'lower'
발생- Celery
crontab
객체는 문자열이 아닌 복합 객체로,croniter
의 기대 입력 형식("0 12 *"
등)과 호환되지 않음
2. Celery 내장 기능 사용 방법
schedule.remaining_delta(now)[1]
메서드로 다음 실행 시간 계산 가능remaining_delta
는last_run
시간 기준으로 다음 실행까지 남은 시간 차이를 반환crontab
객체의._orig_minute
,._orig_hour
등 내부 필드를 직접 파싱하는 것은 추천하지 않음
결론
- Celery의
crontab
스케줄링 기능을 사용할 때는croniter
대신remaining_delta
메서드를 활용하세요. - 예시:
now + schedule.remaining_delta(now)[1]
로 간단히 다음 실행 시간 계산 가능.