在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
相关产品推荐
相关产品推荐

