从Celery的taskset_id中检索GroupResult?

时间:2012-12-03 14:30:46

标签: python celery celery-task

我正在使用芹菜组启动一组芹菜任务,如official documentation

中所述

我还将组(taskset)id存储到db中,以便轮询芹菜的任务集状态。

job = group([
        single_test.s(1, 1),
        single_test.s(1, 2),
        single_test.s(1, 3),
    ])

result = job.apply_async()

test_set = MyTestSet()
test_set.taskset_id = result.id

# store test_set into DB

有没有办法从任务集ID开始获取GroupResult对象(即我的result)? 像this question中所做的那样,但与芹菜组合作。

我已经尝试过:

r = GroupResult(taskset_id)

但它不起作用,因为r.results()始终为空。

我应该使用GroupResult.save()GroupResult.restore() methods吗?

1 个答案:

答案 0 :(得分:20)

是的,你必须保存结果然后恢复它。

job = group([
    single_test.s(1, 1),
    single_test.s(1, 2),
    single_test.s(1, 3),
])
result = job.apply_async()
result.save()

from celery.result import GroupResult
saved_result = GroupResult.restore(result.id)

我遇到了同样的问题,在看到你关于保存/恢复的提示后最终发现了它。