我正在使用 celery 组启动一组 celery 任务,如 official documentation 中所述
我还将组(任务集)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
有没有办法从任务集 ID 开始获取 GroupResult 对象(即我的 result
)?
类似于 this question 中所做的事情,但与 celery 组合作。
我已经尝试过:
r = GroupResult(taskset_id)
但它不起作用,因为 r.results()
始终为空。
我应该使用 GroupResult.save()
和 GroupResult.restore()
methods ?
最佳答案
是的,您必须保存结果然后恢复它。
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)
我遇到了同样的问题,在看到您关于保存/恢复的提示后,我终于弄明白了。
关于python - 从 Celery 中的 taskset_id 检索 GroupResult?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13685344/