【发布时间】:2015-02-04 05:53:46
【问题描述】:
运行 django-celery 3.1.16、Celery 3.1.17、Django 1.4.16。尝试使用 3 个 worker 运行一些并行任务并使用以下命令收集结果:
from celery import group
positions = []
jobs = group(celery_calculate_something.s(data.id) for data in a_very_big_list)
results = jobs.apply_async()
positions.extend(results.get())
任务 celery_calculate_something 返回一个对象以将其放入结果列表中:
app.task(ignore_result=False)
def celery_calculate_something(id):
<do stuff>
无论我尝试什么,在结果上调用 get() 时总是得到相同的结果:
No result backend configured. Please see the documentation for more information.
但是,结果后端已配置 - 我有许多其他任务,ignore_result=False 愉快地添加到 django_celery 中的任务元表中。这与使用从 group() 返回的结果有关。我应该注意它没有在设置中明确设置 - django-celery 似乎已经为你自动设置了它。
我让工作人员使用以下方法收集事件:
manage.py celery worker -l info -E
和 celerycam 一起运行
python manage.py celerycam
检查返回的结果对象(GroupResult 的一个实例)我可以看到后端 attr 是 DisabledBackend 的一个实例。这是问题吗?我误解了什么?
【问题讨论】:
标签: django celery django-celery