[python] Celery의 결과를 검색하고 모니터링하는 방법은 어떻게 되는가?

1. 결과 백엔드 설정

Celery는 작업 결과를 저장하기 위해 결과 백엔드를 사용합니다. 일반적으로는 RedisRabbitMQ와 같은 메시지 브로커를 결과 백엔드로 설정합니다. 예를 들어, Redis를 사용하기 위해 CELERY_RESULT_BACKEND 설정을 다음과 같이 설정합니다:

app = Celery('myapp', backend='redis://localhost', broker='pyamqp://guest@localhost//')

2. 결과 검색

작업의 결과를 검색하려면 AsyncResult 클래스를 사용합니다. AsyncResult 클래스는 작업 ID를 인자로 받아 작업의 상태와 결과를 확인할 수 있는 메서드를 제공합니다.

from celery.result import AsyncResult

result = AsyncResult('4ca9e9d1-972a-4a85-9bcb-16872aaf1f00')  # 작업 ID

if result.ready():
    print('작업 완료')
    if result.successful():
        print('결과:', result.result)
    else:
        print('작업 실패')
else:
    print('작업 진행 중')

위의 예제에서 ready() 메서드는 작업이 완료되었는지 확인하고, successful() 메서드는 작업이 성공적으로 완료되었는지 확인합니다. result 속성을 사용하여 작업의 결과를 가져올 수 있습니다.

3. 결과 모니터링

Celery는 결과를 모니터링하기 위한 여러 도구와 플러그인을 제공합니다. 예를 들어, Flower는 Celery 작업에 대한 실시간 모니터링을 제공하는 웹 기반 인터페이스입니다. Flower를 사용하려면 다음과 같이 설치하고 실행합니다:

$ pip install flower
$ flower -A myapp --port=5555

위의 예제에서 myapp은 Celery 앱의 이름입니다. 브라우저에서 http://localhost:5555로 접속하면 작업 상태 및 결과를 확인할 수 있습니다.

Celery의 결과를 검색하고 모니터링하는 방법에 대해 알아보았습니다. Celery는 큰 규모의 작업 처리를 위한 강력한 도구이며, 결과의 추적과 모니터링을 통해 작업의 진행 상황을 확인할 수 있습니다.