我想用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
添加到您的任务末尾,希望一切都可以工作!