Celery로 비동기 문자 메시지 발송하기

이번에는 Celery를 사용하여 비동기적으로 문자 메시지를 발송하는 방법에 대해 알아보겠습니다. Celery는 파이썬 기반의 분산 작업 큐이며, 비동기 작업을 처리하기에 적합합니다.

Celery 설치하기

Celery를 사용하기 위해서는 먼저 Celery를 설치해야 합니다. 다음 명령어를 사용하여 Celery를 설치합니다.

pip install celery

Celery 설정하기

Celery를 사용하기 위해선 설정 파일을 설정해야 합니다. 프로젝트 루트 디렉토리에 celery.py 파일을 생성하고 다음 예제와 같이 설정해주세요.

from celery import Celery

# Celery 객체 생성
app = Celery('myapp', broker='redis://localhost:6379/0')

# 태스크에 대한 설정
app.conf.task_default_queue = 'default'
app.conf.task_default_exchange_type = 'direct'
app.conf.task_default_routing_key = 'default'

@app.task
def send_sms(phone_number, message):
    # 문자 메시지를 발송하는 코드 작성
    print(f'Sending SMS to {phone_number}: {message}')

문자 메시지 발송 태스크 작성

send_sms 함수는 문자 메시지를 발송하기 위한 태스크를 정의한 것입니다. 발송할 전화번호와 메시지를 인자로 받아서 문자 메시지를 발송하는 코드를 작성하면 됩니다. 이 예제에서는 단순히 전화번호와 메시지를 출력하는 것으로 대체했습니다.

메시지 발송하기

이제 Celery를 통해 문자 메시지를 발송하는 방법에 대해 알아보겠습니다.

from celery import group

# 태스크 그룹 생성
task_group = group([
    send_sms.s('01012345678', '안녕하세요?'),
    send_sms.s('01098765432', '반갑습니다!')
])

# 태스크 그룹 실행
task_group.delay()

group 함수를 사용하여 병렬로 실행할 태스크 그룹을 생성하고, send_sms.s 함수를 사용하여 각각의 태스크에 전화번호와 메시지를 전달합니다. 그리고 delay 메소드를 호출하여 태스크 그룹을 비동기적으로 실행합니다.

Celery 실행하기

Celery를 실행하기 위해 다음 명령을 사용합니다.

celery -A celery worker --loglevel=info

마무리

이제 Celery를 사용하여 비동기적으로 문자 메시지를 발송할 수 있는 방법을 알아보았습니다. Celery는 간편한 설정과 다양한 기능을 제공하여 비동기 작업을 처리하는 데 유용한 도구입니다. 추가적으로 Celery의 다양한 기능과 환경설정에 대해서는 공식 문서를 참고하시기 바랍니다.

#celery #비동기 #문자메시지