[python] Celery와 Django를 함께 사용하는 방법은 어떻게 되는가?

Celery는 분산 작업 큐를 관리하기 위한 Python 기반의 오픈 소스 라이브러리입니다. Django는 웹 애플리케이션 개발을 위한 Python 기반의 프레임워크로, 이 둘을 함께 사용하면 비동기 작업을 처리하고 웹 애플리케이션의 성능을 향상시킬 수 있습니다.

1. Celery 설치

Celery를 사용하기 위해 먼저 설치해야 합니다. 다음 명령을 터미널에서 실행하여 Celery를 설치합니다.

pip install celery

2. Django 프로젝트에 Celery 설정하기

Django 프로젝트에서 Celery를 사용하려면 몇 가지 설정이 필요합니다.

2.1. settings.py 수정

Django 프로젝트의 settings.py 파일에 다음과 같은 내용을 추가합니다.

# Celery 설정
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

# Celery Beat 설정
CELERY_BEAT_SCHEDULE = {
    'task_name': {
        'task': 'app.tasks.task_name',
        'schedule': timedelta(minutes=5),
    },
}

위에서 CELERY_BROKER_URL과 CELERY_RESULT_BACKEND는 Celery가 사용할 메시지 브로커와 결과 백엔드의 URL을 지정하는 설정입니다. 위의 예시는 Redis를 사용하도록 설정한 것입니다.

CELERY_BEAT_SCHEDULE는 주기적으로 실행할 작업들을 설정하는 부분으로, 위의 예시는 app 이름공간의 tasks.py 파일에 있는 task_name 함수를 5분마다 실행하도록 설정한 것입니다.

2.2. celery.py 생성

Django 프로젝트의 최상위 디렉토리에 celery.py 파일을 생성하고 다음과 같이 설정합니다.

import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_name.settings')

app = Celery('project_name')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

위의 코드에서 project_name은 Django 프로젝트의 이름으로 변경해야 합니다.

3. 비동기 작업 정의하기

Celery를 사용하여 비동기 작업을 정의하려면 tasks.py 파일을 생성하고 작업을 정의해야 합니다. 다음은 tasks.py 파일의 예시입니다.

from celery import shared_task

@shared_task
def task_name():
    # 작업 내용
    pass

위의 코드에서 @shared_task 데코레이터를 사용하여 Celery가 해당 함수를 인식하도록 설정합니다.

4. Celery 실행하기

Celery를 실행하기 위해 터미널에서 다음 명령을 실행합니다.

celery -A project_name worker -l INFO

위의 명령에서 project_name은 Django 프로젝트의 이름으로 변경해야 합니다.

결론

위의 단계에 따라 Celery와 Django를 함께 사용하는 방법을 알아보았습니다. 이제 Celery를 사용하여 Django 웹 애플리케이션에서 비동기 작업을 처리할 수 있습니다. Celery의 자세한 내용은 공식 문서를 참조하시기 바랍니다.