Celery로 비동기 SMS 발송하기

비동기 작업을 처리하는 데 성능이 우수한 Celery는 Python에서 널리 사용되는 작업 큐 관리자입니다. Celery를 사용하여 SMS를 비동기적으로 발송하는 방법에 대해 알아보겠습니다.

Celery 설치

Celery를 사용하기 위해 먼저 설치해야 합니다. 다음 명령을 실행하여 Celery를 설치합니다.

pip install celery

Celery 작업자(worker) 설정

Celery 작업자는 비동기 작업을 처리하는 프로세스입니다. 작업자를 설정하려면 tasks.py 파일을 생성하고 다음 코드를 추가합니다.

from celery import Celery

# Celery 앱 생성
app = Celery('sms', broker='amqp://guest:guest@localhost:5672//')

@app.task
def send_sms(phone_number, message):
    # SMS 발송 로직 작성
    # ...
    return "SMS sent successfully"

Celery 작업 실행

Celery 작업을 실행하기 위해 다음 명령을 터미널에서 실행합니다.

celery -A tasks worker --loglevel=info

Celery 작업 예약

SMS 발송 작업을 예약하려면 다음과 같이 tasks.py 파일을 수정합니다.

from datetime import datetime, timedelta

from celery import Celery
from celery.schedules import crontab

# Celery 앱 생성
app = Celery('sms', broker='amqp://guest:guest@localhost:5672//')

# crontab을 사용하여 매일 오후 4시에 SMS 발송 작업을 예약
app.conf.beat_schedule = {
    'send_sms': {
        'task': 'tasks.send_sms',
        'schedule': crontab(hour=16, minute=0),
        'args': ('01012345678', '안녕하세요. Celery를 사용하여 비동기 SMS를 발송합니다.')
    },
}

위 코드에서는 crontab을 사용하여 매일 오후 4시에 send_sms 작업이 예약됩니다. 발송할 전화번호와 메시지는 args에 전달됩니다.

결론

Celery를 사용하여 비동기적으로 SMS를 발송할 수 있습니다. 이를 통해 더 효율적으로 작업을 처리하고, 사용자 경험을 향상시킬 수 있습니다. 또한, 예약 작업을 추가하여 원하는 시간에 SMS를 발송할 수도 있습니다.

놓치지 말아야 할 중요한 것은 Celery를 사용하여 비동기 작업을 수행할 때 성능이 대폭 향상된다는 것입니다.

#Celery #비동기작업