如何在 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 条目

django+celery+rabbitmq实践

如何在 Django 中等待芹菜任务的结果

从 AJAX 请求调用 django 视图(解析 celery task_id)

如何在任务中获取芹菜结果模型(使用 django-celery-results)

如何在 Django 中使用 Celery 上传和处理大型 excel 文件?