SeouliteLab

파이썬 웹 개발의 비동기 처리를 위한 django-celery 활용 가이드 본문

카테고리 없음

파이썬 웹 개발의 비동기 처리를 위한 django-celery 활용 가이드

Seoulite Lab 2024. 4. 16. 08:50

django-celery는 Django 웹 애플리케이션에서 비동기 작업을 처리하기 위한 도구입니다. 이를 통해 웹 요청에 따라 실행 시간이 오래 걸리는 작업을 백그라운드에서 처리하여 웹 애플리케이션의 응답 속도를 향상시킬 수 있습니다. 아래에서 django-celery의 기능과 사용법을 상세히 소개하겠습니다.

기능 1: Celery 설정 및 실행

django-celery를 사용하여 Celery 작업자(worker)를 설정하고 실행할 수 있습니다. Celery는 분산 시스템을 위한 비동기 작업 큐(Queue) 프레임워크로, 웹 애플리케이션과 별도의 프로세스로 실행됩니다.

예제 1: Celery 설정 및 실행

# settings.py
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

# tasks.py
from celery import shared_task

@shared_task
def add(x, y):
    return x + y
# Celery 실행
celery -A myproject worker -l info

기능 2: 비동기 작업 정의 및 실행

django-celery를 사용하여 비동기 작업을 정의하고 실행할 수 있습니다. 웹 애플리케이션에서는 Celery를 통해 정의한 작업을 호출하여 비동기적으로 실행할 수 있습니다.

예제 2: 비동기 작업 정의 및 실행

# views.py
from django.shortcuts import render
from .tasks import add

def home(request):
    result = add.delay(3, 5)
    return render(request, 'home.html', {'result': result})
<!-- home.html -->
<!DOCTYPE html>
<html>
<head>
    <title>Home</title>
</head>
<body>
    <h1>비동기 작업 결과</h1>
    <p>작업 ID: {{ result.task_id }}</p>
    <p>상태: {{ result.status }}</p>
    <p>결과: {{ result.result }}</p>
</body>
</html>

기능 3: 작업 결과 모니터링

django-celery를 사용하여 비동기 작업의 상태와 결과를 모니터링할 수 있습니다. Celery 웹 인터페이스를 통해 작업 대기열, 실행 중인 작업, 완료된 작업 등의 정보를 확인할 수 있습니다.

예제 3: 작업 결과 모니터링

# Celery 웹 인터페이스 실행
celery -A myproject flower