如何在 Django 视图中使用 celery 存储延迟调用的结果?
Posted
技术标签:
【中文标题】如何在 Django 视图中使用 celery 存储延迟调用的结果?【英文标题】:How to store the result of a delay-call using celery in a django view? 【发布时间】:2010-09-13 18:55:45 【问题描述】:我已遵循 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
但是如果我的 add-method 需要很长时间才能响应,我如何存储调用 add.delay(1,2) 时得到的结果对象并使用它来检查进度/成功/结果使用 get later ?
【问题讨论】:
【参考方案1】:你只需要task-id:
result = add.delay(2, 2)
result.task_id
您可以通过它轮询任务的状态(使用例如 AJAX) Django-celery 带有一个以 JSON 格式返回结果和状态的视图: http://celeryq.org/docs/django-celery/reference/djcelery.views.html
【讨论】:
以上是关于如何在 Django 视图中使用 celery 存储延迟调用的结果?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 celery 和 Django 以编程方式生成 celerybeat 条目
从 AJAX 请求调用 django 视图(解析 celery task_id)