有限的芹菜击败任务

时间:2012-03-09 15:51:10

标签: python django rabbitmq celery celerybeat

我在与第三方API集成的项目中使用Celery。我需要将一个文件发送到服务进行处理。发送文件后,我需要每隔10秒请求处理状态,直到完成。

正如我现在所做的那样,主要任务将分离子任务以检查处理的状态。我希望这些子任务像有限的芹菜节拍任务一样。当我把它称为子任务时,我想开始任务生活,我希望在任务完成时结束它。

实现这一目标的最佳方式是什么?

1 个答案:

答案 0 :(得分: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)

倒计时是重试前的秒数。