[python] Celery의 작업 진행률 추적 및 상태 모니터링 방법은 어떻게 되는가?

Celery는 파이썬에서 사용되는 분산 작업 큐 시스템입니다. 작업 큐 시스템을 사용할 때는 작업의 진행 상태를 추적하고 모니터링할 필요가 있습니다. 이를 위해 Celery는 몇 가지 유용한 기능을 제공합니다.

1. 진행률 추적을 위한 테스크 상태 업데이트

Celery에서 작업은 테스크라는 개념으로 표현됩니다. 각 테스크는 진행 상태와 관련된 정보를 포함할 수 있는 상태 필드를 가지고 있습니다. 이 상태 필드는 작업의 진행률을 추적하는 데 사용될 수 있습니다.

from celery import Task

class MyTask(Task):
    def on_success(self, retval, task_id, args, kwargs):
        # 작업이 성공적으로 완료되었을 때 실행될 코드
        self.update_state(state='SUCCESS', meta={'progress': 100})
    
    def on_failure(self, exc, task_id, args, kwargs, einfo):
        # 작업이 실패했을 때 실행될 코드
        self.update_state(state='FAILURE', meta={'progress': 0})

위의 코드는 MyTask라는 사용자 정의 테스크를 정의한 예시입니다. on_success 메소드는 작업이 성공했을 때 호출되어 작업 상태를 ‘SUCCESS’로 설정하고 진행률을 100으로 설정합니다. on_failure 메소드는 작업이 실패했을 때 호출되어 작업 상태를 ‘FAILURE’로 설정하고 진행률을 0으로 설정합니다.

2. 상태 모니터링을 위한 Celery 웹 인터페이스

Celery는 작업의 상태를 실시간으로 모니터링할 수 있는 웹 인터페이스도 제공합니다. 이 웹 인터페이스를 사용하면 작업을 쉽게 추적하고 진행 상황을 확인할 수 있습니다.

Celery 웹 인터페이스를 사용하기 위해서는 flower라는 패키지를 설치해야 합니다. 아래의 명령을 실행하여 flower를 설치할 수 있습니다.

pip install flower

설치가 완료되면 아래의 명령을 실행하여 Celery 웹 인터페이스를 실행할 수 있습니다.

celery flower

이제 브라우저에서 http://localhost:5555로 접속하면 Celery 웹 인터페이스를 통해 작업의 상태를 모니터링할 수 있습니다.

결론

Celery를 사용하여 작업의 진행률을 추적하고 상태를 모니터링하는 것은 간단하고 유연한 방법입니다. 테스크 상태에 대한 업데이트와 Celery 웹 인터페이스를 이용하여 진행 중인 작업을 실시간으로 모니터링할 수 있습니다. 이를 통해 작업의 진행 상태를 투명하게 추적하고 관리할 수 있습니다.