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 웹 인터페이스를 이용하여 진행 중인 작업을 실시간으로 모니터링할 수 있습니다. 이를 통해 작업의 진행 상태를 투명하게 추적하고 관리할 수 있습니다.