기본 콘텐츠로 건너뛰기

라벨이 Celery Beat인 게시물 표시

Django + Celery + Redis로 비동기 작업 처리하기 (실전 예제 포함)

Django + Celery + Redis로 비동기 작업 처리하기 (실전 예제 포함) 안녕하세요! 오늘은 Django에서 Celery와 Redis를 사용하여 비동기 작업을 처리하는 방법에 대해 알아보겠습니다. 이 조합은 이메일 발송, 데이터 처리, 파일 변환 등 시간이 오래 걸리는 작업을 비동기적으로 처리할 때 매우 유용합니다. 왜 비동기 처리가 필요할까요? 웹 애플리케이션에서 다음과 같은 작업들은 사용자 경험을 해칠 수 있습니다: 대용량 파일 처리 이메일 발송 외부 API 호출 복잡한 데이터 분석 이미지 처리 이러한 작업들을 동기적으로 처리하면 사용자는 작업이 완료될 때까지 기다려야 합니다. 비동기 처리를 통해 이러한 문제를 해결할 수 있습니다. 프로젝트 설정 먼저 필요한 패키지들을 설치합니다: pip install celery redis django-celery-results Redis 설치 (Windows) Windows에서는 Redis를 설치하기 위해 WSL2를 사용하거나, Docker를 사용하는 것을 추천드립니다: docker run -d -p 6379:6379 redis Django 설정 settings.py 에 Celery 설정을 추가합니다: # Celery 설정 CELERY_BROKER_URL = 'redis://localhost:6379/0' CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' CELERY_ACCEPT_CONTENT = ['json'] CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json' CELERY_TIMEZONE = 'Asia/Seoul' # Celery Beat 설정 (주기적 작업) CELERY_BEAT_SCHEDULE = { 'che...