Celery와 AWS SQS를 연동하여 비동기 메시지 전송
소개
Celery는 파이썬으로 작성된 분산 작업 대기열을 관리하기 위한 도구입니다. 이 도구를 사용하면 비동기적으로 작업을 처리하고 병렬성을 향상시킬 수 있습니다. AWS SQS(Simple Queue Service)는 Amazon Web Services(AWS)에서 제공하는 관리형 메시지 대기열 서비스로, 큐 기반의 아키텍처를 구축할 때 사용됩니다. Celery와 AWS SQS를 연동하면 Celery 작업을 메시지 대기열로 전송하고, 백그라운드에서 비동기적으로 처리할 수 있습니다.
Celery 설정
- Celery 설치:
pip install celery
celery.py
파일 생성:from celery import Celery app = Celery('my_app', broker='sqs://ACCESS_KEY:SECRET_KEY@REGION/QUEUE_NAME')
ACCESS_KEY
,SECRET_KEY
,REGION
,QUEUE_NAME
을 해당하는 값으로 변경합니다.
AWS SQS 설정
- AWS 계정으로 로그인한 후, SQS 서비스로 이동합니다.
-
큐 생성:
새로운 큐를 생성하고, 큐 URL을 작성한 Celery 설정 파일에 입력합니다. - 액세스 키 및 비밀 액세스 키 생성:
해당 AWS 계정에 액세스 키 및 비밀 액세스 키가 없는 경우, “보안 자격 증명”에서 새 액세스 키를 생성합니다.
사용 예시
아래는 Celery와 AWS SQS를 연동하여 비동기 메시지 전송하는 예시입니다.
from celery import shared_task
@shared_task
def send_email(to, subject, body):
# 이메일 전송 로직 구현
pass
# send_email 함수를 Celery 작업으로 실행
send_email.delay('example@example.com', 'Hello!', 'This is a test email')
요약
Celery와 AWS SQS를 연동하면 파이썬 애플리케이션에서 비동기적으로 작업을 처리할 수 있습니다. Celery를 사용하여 작업을 정의하고, AWS SQS를 사용하여 작업을 전송하고 처리할 수 있습니다. 이를 통해 애플리케이션의 응답 시간을 단축하고 확장성을 높일 수 있습니다.
참고 자료
#Celery #AWS