14

我正在使用官方文档中描述的 celery group 开始一组 celery 任务

我还将组(任务集)ID 存储到数据库中,以便轮询 celery 的任务集状态。

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

有没有办法result从任务集 id 开始获取 GroupResult 对象(即 my )?类似于this question中所做的事情,但与芹菜组合作。

我已经尝试过这样做:

r = GroupResult(taskset_id)

但它不起作用,因为r.results()总是空的。

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

4

1 回答 1

23

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

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)

我遇到了同样的问题,在看到您有关保存/恢复的提示后,我终于明白了。

于 2013-01-06T19:57:07.467 回答