我在与第三方API集成的项目中使用Celery。我需要将一个文件发送到服务进行处理。发送文件后,我需要每隔10秒请求处理状态,直到完成。
正如我现在所做的那样,主要任务将分离子任务以检查处理的状态。我希望这些子任务像有限的芹菜节拍任务一样。当我把它称为子任务时,我想开始任务生活,我希望在任务完成时结束它。
实现这一目标的最佳方式是什么?
答案 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)
倒计时是重试前的秒数。