【问题标题】:Retrieving GroupResult from taskset_id in Celery?从芹菜中的taskset_id中检索GroupResult?
【发布时间】:2012-11-21 01:01:02
【问题描述】:

我正在使用 official documentation 中描述的 celery 组开始一组 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

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

我已经试过了:

r = GroupResult(taskset_id)

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

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

【问题讨论】:

    标签: python celery celery-task


    【解决方案1】:

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

    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)
    

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

    【讨论】:

    • 在 celery 4.1.0 (latentcall) 中,您必须将应用实例传递给 restore 方法:GroupResult.restore(result.id, app=group.app)
    猜你喜欢
    • 2014-08-14
    • 2011-07-29
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    相关资源
    最近更新 更多