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의 자세한 내용은 공식 문서를 참조하시기 바랍니다.