Celery와 AWS SQS를 연동하여 비동기 메시지 전송

소개

Celery는 파이썬으로 작성된 분산 작업 대기열을 관리하기 위한 도구입니다. 이 도구를 사용하면 비동기적으로 작업을 처리하고 병렬성을 향상시킬 수 있습니다. AWS SQS(Simple Queue Service)는 Amazon Web Services(AWS)에서 제공하는 관리형 메시지 대기열 서비스로, 큐 기반의 아키텍처를 구축할 때 사용됩니다. Celery와 AWS SQS를 연동하면 Celery 작업을 메시지 대기열로 전송하고, 백그라운드에서 비동기적으로 처리할 수 있습니다.

Celery 설정

  1. Celery 설치:
    pip install celery
    
  2. 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 설정

  1. AWS 계정으로 로그인한 후, SQS 서비스로 이동합니다.
  2. 큐 생성:
    새로운 큐를 생성하고, 큐 URL을 작성한 Celery 설정 파일에 입력합니다.

  3. 액세스 키 및 비밀 액세스 키 생성:
    해당 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