Django에서 Celery와 Redis를 통합하여 비동기 작업 처리를 구현하는 방법
소개:
웹 애플리케이션에는 이메일 보내기, 이미지 처리, 보고서 생성 등과 같이 시간이 많이 걸리는 작업이 많이 있습니다. 이러한 작업을 동기식으로 처리하면 사용자 경험에 심각한 영향을 미치므로 비동기식 작업 처리 시스템을 사용해야 합니다.
Django는 널리 사용되는 Python 웹 프레임워크이고 Celery는 비동기 작업 처리 솔루션을 제공하는 오픈 소스 분산 작업 대기열 시스템입니다. 비동기 작업 처리를 구현하려면 Redis를 Celery의 메시지 브로커로 사용해야 합니다.
이 글에서는 Django에서 Celery와 Redis를 통합하여 비동기 작업 처리를 달성하는 방법을 소개합니다. 다음은 설치 및 구성, 작업 생성, 작업 호출, 모니터링 작업의 네 부분으로 나누어 설명합니다.
1. 설치 구성
Celery 및 Redis 설치
pip 명령을 사용하여 Celery 및 Redis 설치:
pip install celery redis
Django 설정 구성
Django 프로젝트의 settings.py 파일에 다음 구성을 추가하세요.
# Celery配置 CELERY_BROKER_URL = 'redis://localhost:6379/0' CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
여기 구성에서는 Redis를 메시지 브로커 및 결과 저장소로 사용하도록 지정합니다.
Celery Worker 시작
Django 프로젝트의 루트 디렉터리에 celery.py라는 파일을 만들고 다음 콘텐츠를 추가합니다.
from celery import Celery import os os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings') app = Celery('project') app.config_from_object('django.conf:settings', namespace='CELERY') app.autodiscover_tasks()
이 파일의 목적은 Celery 인스턴스를 만들고 Django의 구성을 로드하는 것입니다. 프로젝트.
Celery Worker를 시작하려면 터미널에서 다음 명령을 실행하세요.
celery -A project worker --loglevel=info
2. 작업 생성
tasks.py 파일 생성
Django 프로젝트의 앱 디렉터리에 task.py라는 파일을 생성하고, 그리고 다음을 추가하세요:
from celery import shared_task @shared_task def add(x, y): return x + y
여기에는 두 개의 매개변수 x와 y를 받고 그 합계를 반환하는 add라는 작업이 정의되어 있습니다.
3. 작업 호출
Celery 작업은 Django의 뷰 함수 또는 다른 곳에서 다음과 같은 방법으로 호출할 수 있습니다.
from app.tasks import add result = add.delay(1, 2)
여기서, 지연() 메서드와 매개변수를 사용하여 추가 작업을 호출하고 결과는 다음과 같습니다. 결과 변수에 저장됩니다.
4. 작업 모니터링
Django에서 작업 실행을 모니터링하려면 Celery에서 제공하는 Flower 도구를 사용할 수 있습니다. 다음 단계에 따라 설치 및 구성할 수 있습니다.
Flower 설치
pip 명령을 사용하여 Flower 설치:
pip install flower
Start Flower
터미널에서 다음 명령을 실행하여 Flower 시작:
celery flower --broker=redis://localhost:6379/0
요약:
위 단계를 통해 Django에서 Celery와 Redis를 통합하여 비동기 작업 처리를 구현할 수 있습니다. 웹 애플리케이션을 개발할 때 비동기 작업 처리는 사용자 경험과 시스템 성능을 크게 향상시킬 수 있으므로 실제 프로젝트에서 광범위한 응용 가치를 갖습니다. 동시에, 작업 수행을 모니터링함으로써 작업 처리상의 문제점을 신속하게 발견하고 해결함으로써 시스템의 안정성과 신뢰성을 확보할 수 있습니다.
위 내용은 비동기 작업 처리를 구현하기 위해 Django에서 Celery와 Redis를 통합하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!