Django REST framework은 웹 API 개발을 위한 강력한 도구입니다. 하지만 때로는 일부 작업을 주기적으로 실행해야 할 때가 있습니다. 이를 위해 Django에서 제공하는 작업 스케줄링 라이브러리를 사용할 수 있습니다.
Celery와 함께 사용하기
Celery는 분산 작업 큐를 구현하는 데 사용되는 라이브러리입니다. 그리고 Django와 잘 통합됩니다. Celery를 사용하여 Django REST framework에서 작업 스케줄링을 구현하는 방법을 알아보겠습니다.
Celery 설치
먼저, Celery를 설치해야 합니다. 다음 명령을 사용하여 Celery를 설치합니다:
pip install celery
Celery 설정
Celery를 Django 프로젝트에 설정해야 합니다. settings.py
파일을 열고 다음과 같이 Celery 관련 설정을 추가합니다:
# settings.py
# Celery settings
CELERY_BROKER_URL = 'redis://localhost:6379/0' # Redis broker URL
CELERY_RESULT_BACKEND = 'redis://' # Redis backend URL
# Task configuration
CELERY_BEAT_SCHEDULE = {
'task-name': {
'task': 'myapp.tasks.my_task_function',
'schedule': crontab(minute='*/15'), # Run every 15 minutes
# Additional options...
},
}
위의 예제에서는 Redis를 사용하여 Celery 브로커 및 결과 백엔드를 구성하였습니다. CELERY_BEAT_SCHEDULE
은 작업 스케줄을 정의하는 딕셔너리입니다. task-name
은 원하는 작업 이름, myapp.tasks.my_task_function
은 실행하려는 작업 함수의 경로입니다. schedule
은 작업이 실행되는 시간을 지정합니다.
작업 함수 작성
스케줄링하려는 작업 함수를 작성해야 합니다. myapp
디렉토리에 tasks.py
파일을 만들고 다음과 같이 작업 함수를 정의합니다:
# tasks.py
from celery import shared_task
@shared_task
def my_task_function():
# 작업 수행
...
위의 예에서는 @shared_task
데코레이터를 사용하여 작업 함수를 Celery 작업으로 등록합니다. 작업 함수 내에서 실제 작업을 수행합니다.
Celery worker 실행
마지막으로, Celery worker를 실행해야 합니다. 다음 명령을 사용하여 worker를 실행합니다:
celery -A myapp worker --loglevel=info
위의 명령에서 myapp
은 Django 프로젝트의 이름입니다. --loglevel
옵션을 사용하여 로그 레벨을 지정할 수 있습니다.
작업 스케줄링 테스트
이제 작업 스케줄링이 제대로 작동하는지 확인해보겠습니다. Django 서버를 실행하고, 스케줄링된 작업이 주기적으로 실행되는지 확인하세요.