Celery를 사용한 주기적인 작업 예약

목차

소개

주기적으로 실행되는 작업을 예약해야 하는 다양한 상황이 있습니다. 이를 위해 프로그래머들은 다양한 방법을 사용합니다. 그 중 하나는 Celery라는 분산 작업 큐를 사용하는 것입니다. Celery를 사용하면 주기적인 작업을 빠르고 효율적으로 예약할 수 있습니다.

Celery란 무엇인가?

Celery는 Python으로 개발된 분산 작업 큐입니다. 이를 사용하면 작업을 비동기적으로 실행하고 병렬로 처리할 수 있습니다. Celery는 작업을 큐에 넣고 워커(worker)가 해당 작업을 처리하도록 할 수 있습니다.

Celery 설치 및 구성

Celery를 사용하기 위해서는 먼저 Celery 패키지를 설치해야 합니다. 다음 명령을 사용하여 Celery를 설치할 수 있습니다.

pip install celery

Celery를 구성하려면 먼저 celery.py라는 이름의 파이썬 스크립트를 만들어야 합니다. 그리고 아래와 같이 작성합니다.

from celery import Celery

app = Celery('myapp', broker='redis://localhost:6379/0')

@app.task
def add(x, y):
    return x + y

위의 예제에서는 Redis를 사용하여 Celery의 메시지 브로커로 설정했습니다. 필요에 따라 메시지 브로커를 변경할 수 있습니다.

주기적인 작업 예약

Celery를 사용하여 작업을 주기적으로 예약하기 위해서는 Celery Beat를 설정해야 합니다. Celery Beat는 주기적인 작업 예약을 관리하는 역할을 담당합니다.

Celery Beat를 설정하려면 celery.py 파일에 다음 코드를 추가해야 합니다.

from celery import Celery
from celery.schedules import crontab

app = Celery('myapp', broker='redis://localhost:6379/0')

@app.task
def add(x, y):
    return x + y

app.conf.beat_schedule = {
    'add-every-30-seconds': {
        'task': 'myapp.add',
        'schedule': 30.0,
        'args': (16, 16),
    },
}

위의 예제에서는 add 함수를 매 30초마다 실행하도록 설정했습니다. 필요에 따라 주기적으로 실행할 함수와 스케줄을 변경할 수 있습니다.

결론

Celery를 사용하면 주기적인 작업을 간편하게 예약할 수 있습니다. Celery를 사용하여 작업을 비동기적으로 실행하고 병렬로 처리할 수 있으므로, 성능과 확장성을 향상시킬 수 있습니다.