2012-03-09 2 views
1

타사 API와 통합 된 프로젝트에서 Celery를 사용하고 있습니다. 처리를 위해 서비스에 파일을 보내야합니다. 파일을 보낸 후 처리가 완료 될 때까지 10 초마다 처리 상태를 요청해야합니다.한정된 셀러리 작업 수행

이제 주 작업은 하위 작업을 스핀 오프하여 처리 상태를 확인합니다. 이 하위 작업을 유한 셀러리 작업과 같은 역할을하고 싶습니다. 하위 작업으로 호출 할 때 작업을 시작하고 작업이 완료되면 작업을 끝내기를 원합니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 예를 들어

답변

4

사용 Task.retry :

from celery.result import AsyncResult 

@task 
def verify_task(task_id): 
    result = AsyncResult(task_id) 
    if result.ready(): 
     do_something_with(result.get()) 
    else: 
     verify_task.retry(countdown=1) 

카운트 다운 다시 시도하기 전에 (초)입니다.

+0

감사합니다. 재 시도가 Exception 처리 외에서 사용되도록 의도되었다는 것을 알기 쉽습니다. – Kenzic