Celery Redis Django 기술 분석: 고가용성 비동기 작업 처리를 달성하려면 특정 코드 예제가 필요합니다.
소개:
오늘날 빠르게 발전하는 인터넷 분야에서는 고가용성 비동기 작업 처리를 달성하는 것이 매우 중요합니다. 이 기사에서는 Celery, Redis 및 Django를 사용하여 고가용성 비동기 작업 처리를 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.
1. Celery 비동기 작업 처리 프레임워크 소개:
Celery는 Python으로 작성된 오픈 소스 분산 작업 스케줄링 프레임워크로, 주로 다수의 동시 분산 작업을 처리하는 데 사용됩니다. 작업 큐, 메시지 전달, 작업 배포 등의 기능을 제공하며 효율적인 분산 비동기 작업 처리를 쉽게 구현할 수 있습니다.
2. Redis 데이터베이스 소개:
Redis는 키-값 쌍의 형태로 데이터를 저장하는 인메모리 데이터베이스입니다. 지속성, 게시/구독, 만료된 데이터 자동 삭제 및 기타 기능을 지원하며 고성능 및 확장성이 있습니다. Celery에서 Redis는 메시지 미들웨어 역할을 하며 작업의 안정적인 실행을 보장하기 위해 작업 및 예약 정보를 저장하는 역할을 합니다.
3. Django 프레임워크는 Celery Redis와 결합하여 고가용성 비동기 작업 처리를 달성합니다.
Celery 및 Redis 설치:
Django 프로젝트의 가상 환경에서 pip를 사용하여 Celery 및 Redis를 설치합니다.
pip install celery pip install redis
Django 설정 구성:
Django 프로젝트의 settings.py 파일에 다음 구성 추가:
# Celery配置 CELERY_BROKER_URL = 'redis://localhost:6379/0' CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' CELERY_ACCEPT_CONTENT = ['application/json'] CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json'
작업 생성:
Django 프로젝트의 앱 디렉터리에 task.py 파일을 생성하고 정의 비동기 작업:
from celery import shared_task @shared_task def add(x, y): return x + y
Celery 작업자 시작:
터미널에서 Django 프로젝트 디렉터리로 전환하고 Celery 작업자 시작:
celery -A myproject worker -l info
비동기 작업 트리거:
뷰 함수 또는 Django 프로젝트의 다른 위치에서 비동기 작업:
from myapp.tasks import add result = add.delay(2, 3)
작업 실행 결과 가져오기:
AsyncResult 개체의 get 메서드를 통해 작업 실행 결과 가져오기:
result = AsyncResult(task_id) print(result.result)
4. 샘플 코드:
settings.py 파일 구성:
# Celery配置 CELERY_BROKER_URL = 'redis://localhost:6379/0' CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' CELERY_ACCEPT_CONTENT = ['application/json'] CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json'
tasks.py 파일:
from celery import shared_task @shared_task def add(x, y): return x + y
views.py 파일:
from django.http import JsonResponse from myapp.tasks import add def my_view(request): result = add.delay(2, 3) return JsonResponse({'task_id': result.id})
결과 획득 코드:
from celery.result import AsyncResult from myapp.tasks import add def getResult(request, task_id): result = AsyncResult(task_id) if result.ready(): return JsonResponse({'result': result.result}) else: return JsonResponse({'status': 'processing'})
결론:
이 글에서는 Celery, Redis 및 Django를 결합하여 높은 성능을 달성하는 방법을 소개합니다. 가용성 비동기 작업 처리. Celery 및 Redis를 구성하고 작업을 정의하고 Celery 작업자를 시작하면 비동기 작업 예약 및 실행이 달성될 수 있습니다. 위의 코드 예제를 통해 Celery Redis Django의 장점을 경험하고 특정 요구에 따라 더욱 최적화하고 확장할 수 있습니다. 위의 내용은 Celery Redis Django에 대한 기술적 분석의 일부일 뿐입니다. 이 기사가 독자들에게 도움이 되기를 바랍니다.
위 내용은 Celery Redis Django 기술 분석: 고가용성 비동기 작업 처리 달성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!