celery result_backend 与 postgresql - 任务表中的某些字段为 null

LNB*_*LNB 5 celery

我正在使用 Celery 进行 POC。我的目标是创建跨分布式系统的工作流程。

为了进行 POC,我创建了几个 docker 容器,每个容器都有一个以队列选项启动的工作线程。我从另一个容器启动了一条链。该链在容器之间成功执行。现在我决定启用 来result_backend存储每个任务执行的结果。

我使用 schema 选项设置了result_backendto 。postgresql现在执行链后,我确实看到了在 postgres 中创建的表。但是,该task_meta表的某些列为空(例如工作人员、队列)。其中task_id和 状态已正确填充。

有人遇到过类似的问题吗?任何帮助表示赞赏。

小智 7

我知道你问这个问题已经很长时间了,但我希望它能对其他人有所帮助。

默认情况下,Celery 不会将所有任务结果属性写入后端。您必须通过设置来配置它,result_extended如下True所述: https: //docs.celeryproject.org/en/stable/userguide/configuration.html#result-extended

因此,如果您从 python 配置应用程序,则必须执行以下操作:

import celery

app = Celery(
    broker=broker_url,
    backend=postgresq_url,
)

app.conf.update(result_extended=True)
Run Code Online (Sandbox Code Playgroud)