Celery와 AWS Lambda를 연동하여 비동기 함수 실행
소개
비동기 함수 실행은 웹 애플리케이션에서 많은 시간이 소요되는 작업을 백그라운드에서 처리할 수 있게 해주는 중요한 기술입니다. Celery는 파이썬으로 작성된 분산 작업 큐 시스템으로, 비동기 작업을 처리하기 위해 널리 사용됩니다. AWS Lambda는 이벤트 기반의 서버리스 컴퓨팅 플랫폼으로, 서버 관리 없이 코드를 실행할 수 있습니다.
이번 글에서는 Celery와 AWS Lambda를 연동하여 비동기 함수 실행을 구현하는 방법을 소개하겠습니다.
준비 사항
- AWS 계정
- AWS Lambda
- Celery
- Boto3
AWS Lambda 설정하기
- AWS 계정에 로그인한 후 AWS Lambda 서비스로 이동합니다.
- “함수 생성”을 선택합니다.
- “작성 기반”에서 “파이썬 3.7”을 선택합니다.
- 트리거를 설정합니다. 여기서는 직접 호출을 선택합니다.
- 코드를 업로드하기 위해 “코드 업로드” 버튼을 클릭합니다.
- 필요한 코드를 업로드하고 필요한 환경 변수를 설정합니다.
- “저장” 버튼을 클릭하여 설정을 완료합니다.
Celery 설정하기
- Celery를 설치합니다.
- Celery 설정 파일을 만듭니다. 여기서는
celery.py
파일을 생성합니다. celery.py
파일에 필요한 설정을 추가합니다.- Celery 워커를 실행합니다.
Lambda 함수에서 Celery 사용하기
- Boto3를 사용하여 Lambda 함수를 호출하는 코드를 작성합니다.
- Celery 워커가 실행 중인지 확인합니다.
- Boto3를 사용하여 AWS Lambda 함수를 비동기적으로 호출합니다.
- 결과를 확인하고 필요한 처리를 진행합니다.
예제 코드
import boto3
# Lambda 함수 호출을 위한 클라이언트 생성
lambda_client = boto3.client('lambda', region_name='ap-northeast-2')
# Celery 워커 확인
# ...
# 비동기적으로 Lambda 함수 호출
def invoke_lambda_function(function_name, payload):
response = lambda_client.invoke(
FunctionName=function_name,
InvocationType='Event', # 비동기 호출
Payload=payload
)
# 결과 확인
# ...
# Lambda 함수 호출 예시
invoke_lambda_function('my_lambda_function', {'key1': 'value1', 'key2': 'value2'})
마무리
이번 글에서는 Celery와 AWS Lambda를 연동하여 비동기 함수 실행을 구현하는 방법에 대해 알아보았습니다. 이를 통해 웹 애플리케이션에서 복잡한 작업을 비동기적으로 처리할 수 있게 됩니다. Celery와 AWS Lambda를 함께 사용하여 효율적이고 확장 가능한 애플리케이션을 구축해보세요.
#Celery #AWSLambda