从Celery中的tasket_id中检索GroupResult?

发布于 2021-01-29 16:05:59

我正在按照官方文档中的说明使用芹菜组开始一系列芹菜任务

我还将组(任务集)ID存储到db中,以便为任务集状态轮询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
)?类似于在此问题中所做的事情,但与芹菜团体合作。

我已经尝试过:

r = GroupResult(taskset_id)

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

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

关注者
0
被浏览
50
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    是的,您必须保存结果,然后将其还原。

    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)
    

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看