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

+ Recent posts