django:芹菜如何通过他们的ID

时间:2015-07-30 15:41:35

标签: python django celery

想要检查是否有办法优化芹菜任务结果检查的过程。

例如,我有以下代码:

for task_id in tasks: # tasks is a list of celery task ids
    res = app.AsyncResult(task_id)
    if res.successful():
        tasks_ids[task_id] = res.result # here I am storing task results

当前方法的问题是我必须遍历芹菜任务并逐个检查它们。而且我正在使用数据库结果后端,它将为每个celery taskid生成一个查询(至少我认为是这样)。

所以我想检查一下是否有办法检索所有结果?在那儿。 app.AsyncResult()模拟是否有列表操作?

1 个答案:

答案 0 :(得分:1)

Celery有一个ResultSet类可以使用它,它有" join()"和" native_join()"这样做的方法。 文档说,有一个缺点,数据库后端没有实现" native_join()" (这些后端确实实现了它:amqp,Redis和缓存),因为ResultSet可能非常昂贵,类似于您当前的方法。顺便说一句,我认为您可以查看doc和API,看看是否找到了可以帮助您的东西。 我不知道有多难添加对数据库后端的支持(你需要实现" get_many()"如the API says所述。但是,你可以评估更改后端。

我希望它可以帮到你!

相关问题