无法在 Django 1.11 中获取芹菜任务结果



我想用ajax在django中获得一些芹菜任务结果。我有这样的观点:

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('')

on 打印1 我得到SUCCESS
打印2 我得到None
print 3 我得到一个= task_id
的字符串我运行了Redis实例。
我的Celery实例使用SETTINGS

CELERY_BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'

在终端我看到任务成功完成。我在做什么错?

更新:
我正在使用Celery 3.1.25
我的 task,它返回一个 QuerySet,我想以后在html中渲染:

@task(bind = True)
def brand_count(self, brand_ids):
    queryset = Brand.objects.filter(brand_id__in=brand_ids)
    queryset.annotate(amount_of_products=Count('products'))

看起来您刚刚忘记了return任务定义结束时任务的结果。将return queryset添加到您的任务末尾,希望一切都可以工作!

相关内容

  • 没有找到相关文章

最新更新