Celery와 Redis를 이용한 메시지 큐 처리

1. 소개

메시지 큐는 분산 시스템에서 비동기식 작업을 처리하는 데 사용되는 핵심 도구입니다. Celery는 파이썬 기반의 분산 작업 큐라이브러리로, 비동기 작업을 처리하는 데 사용됩니다. Redis는 메모리 기반의 오픈 소스 데이터 저장소로, Celery와 함께 사용하여 메시지 큐를 구현할 수 있습니다.

2. Celery 설치

Celery를 설치하기 위해서는 다음 명령을 실행합니다:

pip install celery

3. Redis 설치

Redis를 설치하기 위해서는 공식 웹사이트에서 제공하는 패키지를 다운로드하고 설치합니다. Windows 사용자라면, Redis를 실행하기 위해 MSOpenTech의 Redis를 사용할 수 있습니다.

4. Celery와 Redis 연결 설정

Celery는 Redis를 사용하여 작업을 처리하기 때문에, Redis와의 연결 설정이 필요합니다. 다음과 같이 celery.py 파일을 생성하여 연결 설정을 추가합니다:

from celery import Celery

app = Celery('myapp', broker='redis://localhost:6379/0', backend='redis://localhost:6379/0')

@app.task
def my_task():
    # 비동기 작업 처리 로직 작성
    pass

위의 예제에서 brokerbackend는 Redis의 주소를 지정하는 부분입니다. localhost:6379/0은 Redis의 기본 주소와 포트를 사용하고, Celery 큐와 결과를 저장하는 Redis 데이터베이스 번호는 0으로 설정하였습니다.

5. 메시지 큐 작업 생성

Celery를 사용하여 메시지 큐 작업을 생성하려면, 다음과 같이 my_task 함수를 작성합니다:

from celery import Celery

app = Celery('myapp', broker='redis://localhost:6379/0', backend='redis://localhost:6379/0')

@app.task
def my_task():
    # 비동기 작업 처리 로직 작성
    pass

result = my_task.delay()

위의 예제에서 my_task.delay()는 Celery를 통해 비동기 작업을 큐에 추가하는 코드입니다.

6. 메시지 큐 작업 처리

작성한 작업을 처리하기 위해서는 Celery Worker를 실행해야 합니다. 다음과 같이 명령을 실행하여 Worker를 시작합니다:

celery -A myapp worker --loglevel=info

위의 명령에서 myapp은 Celery 설정이 있는 모듈 이름입니다.

7. 결론

Celery와 Redis를 사용하여 메시지 큐를 처리하는 방법에 대해 알아보았습니다. Celery는 높은 확장성, 신뢰성 및 유연성을 제공하여 비동기 작업을 효율적으로 처리할 수 있게 해줍니다. Redis는 메모리 기반의 데이터 저장소로, Celery와 함께 사용될 때 빠른 처리 속도를 보장합니다. 이러한 조합은 대규모 분산 시스템에서 효과적인 작업 처리를 위한 이상적인 솔루션입니다.


참고문헌: