Django에서 정기 배치 구현하기
Django에서 정기 배치 작업을 구현하기 위해 Celery와 Django-celery-beat를 활용하는 방법입니다.
1단계: Celery와 Django-celery-beat 설치
필요한 패키지를 설치합니다.
pip install celery django-celery-beat
2단계: Celery 설정
Django 프로젝트의 settings.py
에 Celery 설정을 추가합니다.
# settings.py
import os
# Celery 설정
CELERY_BROKER_URL = 'redis://localhost:6379/0' # Redis를 브로커로 사용
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
CELERY_TIMEZONE = 'Asia/Seoul'
# Django-celery-beat 설정
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'
3단계: Celery 앱 생성
Django 프로젝트 내에 Celery 앱을 초기화하는 코드를 추가합니다.
# __init__.py
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project_name.settings')
app = Celery('your_project_name')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
4단계: 정기 배치 작업 생성
특정 작업을 정의하는 Python 함수를 작성하고, Celery의 @app.task
데코레이터를 사용하여 이를 태스크로 등록합니다.
# tasks.py
from celery import shared_task
@shared_task
def my_scheduled_job():
# 할 일
print("정기 배치 작업 실행")
5단계: 스케줄러 설정
Django-celery-beat를 사용하여 정기적으로 실행될 작업을 스케줄링합니다.
6단계: Celery 워커와 비트 실행
Celery 워커와 Celery Beat 스케줄러를 실행합니다.
# Celery 워커 실행
celery -A your_project_name worker --loglevel=info
# 별도의 터미널에서 Celery Beat 실행
celery -A your_project_name beat --loglevel=info
이제 설정한 간격에 따라 my_scheduled_job
태스크가 자동으로 실행됩니다.
반응형
'IT > Django-백앤드' 카테고리의 다른 글
django 프로젝트 생성 (pycharm에서 설정) (0) | 2024.02.16 |
---|