[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 공식 문서: https://docs.celeryproject.org
이를 통해 Celery 작업의 결과 타임아웃을 설정하는 방법에 대해 알아보았습니다. Celery를 사용하여 대규모 작업 큐 시스템을 구축하고 있다면 결과 타임아웃을 활용하여 안정성을 높이는 것이 좋습니다.