[python] Celery와 함께 사용할 수 있는 스케줄러는 어떤 것이 있는가?
- Celery Beat: Celery 자체에 내장된 스케줄러입니다. Celery Beat는 cron 형식으로 작업을 예약할 수 있으며, Redis나 PostgreSQL과 같은 백엔드를 사용하여 예약 작업을 저장할 수 있습니다.
예시 코드:
from celery import Celery
from celery.schedules import crontab
app = Celery('myapp', broker='redis://localhost:6379/0')
@app.task
def my_task():
# 작업 수행
# 스케줄된 작업 예약
app.conf.beat_schedule = {
'task-name': {
'task': 'myapp.my_task',
'schedule': crontab(minute=0, hour=0), # 매일 자정에 실행
},
}
- Huey: Celery와 유사한 기능을 제공하는 경량 스케줄러입니다. SQLite, Redis, PostgreSQL 등 다양한 백엔드를 지원하며, cron 표현식을 사용하여 작업을 예약할 수 있습니다.
예시 코드:
import huey
from huey.backends.sqlite_backend import SqliteHuey
huey_obj = SqliteHuey(filename='huey.db')
@huey_obj.task()
def my_task():
# 작업 수행
# 스케줄된 작업 예약
my_task.schedule(crontab(hour=0, minute=0)) # 매일 자정에 실행
- APScheduler: Python에서 널리 사용되는 스케줄러 라이브러리로서 Celery와도 통합하여 사용할 수 있습니다. Cron, 인터벌 등 다양한 방식으로 작업을 예약할 수 있습니다.
예시 코드:
from apscheduler.schedulers.blocking import BlockingScheduler
scheduler = BlockingScheduler()
@scheduler.scheduled_job('cron', hour=0, minute=0)
def my_task():
# 작업 수행
scheduler.start()
- Django Celery Beat: Django 프레임워크와 Celery를 함께 사용하는 경우 Django Celery Beat를 사용할 수 있습니다. 이는 Celery Beat를 Django에서 더 편리하게 사용할 수 있도록 한 패키지입니다.
위의 각 스케줄러는 고유한 특징과 장단점을 가지고 있으므로 프로젝트 요구사항에 맞게 선택하여 사용할 수 있습니다.
참고 문서:
- Celery: https://docs.celeryproject.org/en/latest/index.html
- Huey: https://huey.readthedocs.io/
- APScheduler: https://apscheduler.readthedocs.io/
- Django Celery Beat: https://django-celery-beat.readthedocs.io/