>  기사  >  백엔드 개발  >  실무 경험: Django에서 Celery와 Redis를 통합하여 비동기 작업 구현

실무 경험: Django에서 Celery와 Redis를 통합하여 비동기 작업 구현

WBOY
WBOY원래의
2023-09-26 16:33:371524검색

실무 경험: Django에서 Celery와 Redis를 통합하여 비동기 작업 구현

실습 경험: Django에서 Celery와 Redis를 통합하여 비동기 작업 구현

소개:
웹 애플리케이션의 복잡성이 계속 증가함에 따라 많은 작업에는 많은 시간과 리소스가 필요합니다. 사용자 경험과 시스템 효율성을 향상시키기 위해 개발자는 시간이 많이 걸리는 일부 작업을 실행을 위한 비동기 작업으로 변환해야 하는 경우가 많습니다. Django에서는 Celery와 Redis를 통합하여 비동기 작업을 구현할 수 있습니다. 이 글에서는 실용적인 코드 예제를 통해 Django에서 Celery와 Redis를 통합하는 방법을 소개합니다.

  1. Celery 및 Redis 설치 및 구성:
    먼저 Celery 및 Redis가 설치되어 있는지 확인하세요. 다음과 같이 pip를 사용하여 Celery를 설치할 수 있습니다.
pip install celery

그런 다음 Redis를 설치하려면 다음 명령을 사용할 수 있습니다.

sudo apt-get install redis-server

설치가 완료된 후 Django 프로젝트를 구성해야 합니다. 셀러리와 Redis를 사용합니다. 프로젝트의 settings.py 파일에 다음 코드를 추가합니다.

# CELERY SETTINGS
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

여기서 Redis의 로컬 주소와 포트를 지정합니다. Redis가 실행 중이고 지정된 포트에서 수신 대기 중인지 확인하세요.

  1. Celery 작업 만들기:
    Django 프로젝트의 루트 디렉터리에서 task.py라는 파일을 만듭니다. 이 파일에서 Celery 작업을 정의합니다. 다음은 샘플 코드입니다.
from celery import Celery

app = Celery('myapp', broker='redis://localhost:6379/0')

@app.task
def add(x, y):
    return x + y

이 예에서는 Celery 애플리케이션을 만들고 add라는 작업을 정의합니다. 추가 작업은 두 개의 매개변수 x와 y를 받고 그 합계를 반환합니다.

  1. Cellery 작업 호출:
    Celery 작업을 정의했으므로 다음 단계는 Django 뷰에서 이를 호출하는 것입니다. views.py 파일에 시간이 많이 걸리는 작업을 수행해야 하는 보기 기능이 있다고 가정해 보겠습니다. 다음과 같이 Celery 작업을 호출할 수 있습니다.
from myapp.tasks import add

def my_view(request):
    x = 10
    y = 20
    add.delay(x, y)
    return HttpResponse("Task added to the queue.")

이 예에서는 앞서 정의한 추가 작업을 가져와서 보기 함수에서 호출했습니다. 지연() 메서드를 사용하여 작업을 Celery 대기열에 추가하고 즉시 HttpResponse를 사용자에게 반환합니다. 이렇게 하면 시간이 많이 걸리는 작업을 수행하는 동안 사용자가 차단되지 않습니다.

  1. Celery 작업자 시작:
    Celery 작업을 실행하려면 Celery 작업자를 시작해야 합니다. 프로젝트의 루트 디렉터리에서 터미널 창을 열고 다음 명령을 실행합니다.
celery -A myapp worker -l info

이렇게 하면 Celery 작업자가 시작되고 대기열에서 작업 처리가 시작됩니다. -l 매개변수를 사용하여 로그 수준을 설정할 수 있습니다.

  1. 작업 실행 모니터링:
    유틸리티 도구인 Flower를 사용하여 실행 중인 Celery 작업을 모니터링할 수 있습니다. 먼저 Flower가 설치되어 있는지 확인하세요.
pip install flower

설치가 완료되면 새 터미널 창을 열고 다음 명령을 실행하세요.

flower -A myapp --port=5555

이렇게 하면 Flower 서버가 시작되고 포트 5555에서 수신됩니다. 브라우저에서 localhost:5555를 방문하면 현재 실행 중인 작업 및 작업 상태와 같은 정보를 볼 수 있습니다.

결론:
Celery와 Redis를 통합하면 Django에서 효율적인 비동기 작업 처리를 달성할 수 있습니다. 이 문서에서는 Django 프로젝트에서 Celery를 구성하고 사용하는 기본 단계를 다루고 실용적인 코드 예제를 제공합니다. 이 기사가 개발 시 보다 효율적인 비동기 작업 처리를 달성하는 데 도움이 되기를 바랍니다.

위 내용은 실무 경험: Django에서 Celery와 Redis를 통합하여 비동기 작업 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.