在 celery 中保存组结果:AttibuteError

Gar*_* In 1 python celery flask

我正在尝试保存组结果以供以后检索:

job = group([
    add.s(1, 1),
    add.s(2, 2)
])
result = job.apply_async()
result.save()

from celery.result import GroupResult
saved_result = GroupResult.restore(result.id)
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误消息:

*** AttributeError: 'DisabledBackend' object has no attribute '_restore_group'
Run Code Online (Sandbox Code Playgroud)

CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'在我的配置中设置了后端。

我该如何解决这个问题?

scy*_*ale 7

您需要使用 celery 应用程序对象进行恢复。

使用文档中的“芹菜入门”作为起点:

任务.py:

from celery import Celery

app = Celery('tasks', broker='amqp://guest@localhost//')

@app.task
def add(x, y):
    return x + y
Run Code Online (Sandbox Code Playgroud)

你的代码:

job = group([
    add.s(1, 1),
    add.s(2, 2)
])
result = job.apply_async()
result.save()
return result.id
Run Code Online (Sandbox Code Playgroud)

别处:

from my.app.tasks import app

result = app.GroupResult.restore(some_id)
Run Code Online (Sandbox Code Playgroud)

您的示例显示您restore在与 - 相同的上下文中运行apply_async- 我假设这是一个简化,并且您知道restore除非您在不同的进程中或由于某种原因无法传递结果对象,否则您不需要使用到新的上下文。