[python] Celery의 결과 타임아웃 설정 방법은 어떻게 되는가?

Celery는 분산 작업 큐 시스템을 구축하기 위한 Python 프레임워크입니다. Celery 작업이 실행되면 결과가 반환될 때까지 기다리는데, 때로는 작업이 예상보다 오래 걸리거나 도중에 실패할 수 있습니다. 이럴 때 Celery의 결과 타임아웃 설정을 사용하면 작업이 일정 시간 내에 완료되지 않으면 작업을 종료하고 예외를 발생시킬 수 있습니다.

결과 타임아웃은 Celery의 task_time_limit 속성을 통해 설정할 수 있습니다. 아래는 Celery 작업에 결과 타임아웃을 설정하는 예제 코드입니다:

from celery import Celery

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

@app.task(time_limit=30)  # 작업에 30초의 결과 타임아웃 설정
def my_task():
    # 작업 로직
    ...

result = my_task.delay()
try:
    result.get()
except result.TimeoutError:
    # 결과 타임아웃이 발생했을 때 처리 로직
    ...

위의 코드에서 time_limit 속성은 작업의 최대 실행 시간을 초 단위로 설정합니다. 작업이 지정된 시간 내에 완료되지 않으면 result.get()에서 result.TimeoutError 예외가 발생합니다.

Celery는 Redis, RabbitMQ 및 Amazon SQS 등 다양한 브로커를 지원합니다. 위의 예제에서는 Redis 브로커를 사용하도록 설정되어 있습니다.

Celery에 대한 자세한 내용은 Celery 공식 문서를 참조하시기 바랍니다.

이를 통해 Celery 작업의 결과 타임아웃을 설정하는 방법에 대해 알아보았습니다. Celery를 사용하여 대규모 작업 큐 시스템을 구축하고 있다면 결과 타임아웃을 활용하여 안정성을 높이는 것이 좋습니다.