You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Django 1.11中无法通过AJAX获取Celery任务结果

Django + Celery:任务状态SUCCESS但get()返回None的问题

场景与代码

我在Django项目里尝试通过AJAX接口获取Celery异步任务的结果,写了如下视图函数:

def ajax_brand_count(request, task_id):
    extra_data = brand_count.AsyncResult(task_id)
    print("1", extra_data.state)
    print("2", extra_data.get())
    if extra_data.ready():
        print("3", extra_data)
    return HttpResponse('')

异常现象

调用这个接口时,控制台打印的内容让我很困惑:

  • 打印1输出:SUCCESS
  • 打印2输出:None
  • 打印3输出:和传入的task_id完全相同的字符串

环境情况

  • Redis实例已经正常启动
  • Celery worker也在运行中,Broker配置为:CELERY_BROKER_URL = 'redis://localhos...'

我实在搞不懂,明明任务状态显示成功,为什么调用get()拿不到预期的结果?而且打印AsyncResult对象时直接输出了task_id,这是正常的吗?有没有办法解决这个问题,让我能正确获取到任务执行的结果?


内容的提问来源于stack exchange,提问作者Chiefir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:00:37