[python] Celery의 실패한 작업 재시도 설정 방법은 어떻게 되는가?

Celery는 파이썬으로 작성된 비동기 작업을 처리하기 위한 분산 작업 큐입니다. 작업이 실패하는 경우, Celery는 기본적으로 재시도하지 않습니다. 하지만, 실패한 작업을 재시도하고자 한다면 Celery에서 제공하는 재시도 설정을 사용할 수 있습니다.

Celery에서 실패한 작업을 재시도하기 위해서는 retry 데코레이터를 사용하면 됩니다. 이 데코레이터를 사용하여 작업 함수를 감싸면, 작업이 실패한 경우 일정 시간 후에 자동으로 재시도됩니다.

다음은 Celery에서 실패한 작업을 재시도하는 예시 코드입니다:

from celery import Celery

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

@app.task(bind=True, default_retry_delay=300)  # 재시도 딜레이는 300초로 설정
def my_task(self, arg1, arg2):
    try:
        # 작업 수행 로직
        pass
    except Exception as exc:
        # 작업 실패 시 예외처리
        # 재시도 횟수 설정
        max_retries = app.conf.get('CELERY_MAX_RETRIES', 3)
        retry_count = self.request.retries
        if retry_count < max_retries:
            # 재시도
            raise self.retry(countdown=60)  # 60초 후에 재시도
        else:
            # 재시도 횟수를 초과한 경우에 대한 예외처리
            pass

위의 예시 코드에서 default_retry_delay를 통해 재시도 딜레이를 설정하고, retry를 사용하여 작업 함수를 재시도할 수 있습니다. 재시도 횟수를 설정하고자 할 경우 CELERY_MAX_RETRIES 설정을 사용할 수 있습니다.

추가로, 재시도 시간 간격인 countdown을 조절하여 재시도 딜레이를 설정할 수 있습니다. 위의 예시 코드에서는 60초 후에 재시도하도록 설정되어 있습니다.

이와 같이 Celery에서 실패한 작업을 재시도하도록 설정할 수 있습니다. Celery의 재시도 설정은 작업의 신뢰성을 높이고 오류 처리를 개선하는 데 도움이 될 수 있습니다.

Hope this helps!

참고 링크: