如何在django视图中使用celery存储延迟调用的结果?

Weh*_*olt 6 django view celery

我遵循了http://celeryq.org/docs/django-celery/getting-started/first-steps-with-django.html中的指南,创建了一个在tasks.py中调用我的测试方法的视图:

import time
from celery.decorators import task

@task()
def add(x, y):
    time.sleep(10)
    return x + y
Run Code Online (Sandbox Code Playgroud)

但是如果我的add-method需要很长时间来响应,那么如何在调用add.delay(1,2)时存储我得到的结果对象并使用它来使用get来检查进度/成功/结果?

ask*_*sol 5

您只需要任务 ID:

result = add.delay(2, 2)
result.task_id
Run Code Online (Sandbox Code Playgroud)

这样你就可以轮询任务的状态(使用例如AJAX)。Django-celery 带有一个以 JSON 格式返回结果和状态的视图: http: //celeryq.org/docs/django-celery/reference/djcelery.views。 html