为了让Celery知道任务的当前状态是什么,它将在你拥有的任何结果后端中设置一些元数据。你可以搭载它来存储其他类型的元数据。
def yielder():
for i in range(2**100):
yield i
@task
def report_progress():
for progress in yielder():
# set current progress on the task
report_progress.backend.mark_as_started(
report_progress.request.id,
progress=progress)
def view_function(request):
task_id = request.session['task_id']
task = AsyncResult(task_id)
progress = task.info['progress']
# do something with your current progress
我不会扔吨的数据在那里,但它运作良好,跟踪长时间运行任务的进度。