如何从redis结果后端读取celery结果

How to read celery results from redis result backend

我们有一个 (django) celery 设置,其中一个 redis 数据库作为代理,另一个作为结果后端。

检查结果后端redis中的键,我们看到485K个字符串类型的键和7个none类型的键。一个键的例子是:celery-task-meta-26351389-c077-4ba6-8e34-66731f6636b3。我假设 26351389-c077-4ba6-8e34-66731f6636b3 是任务 ID。预计不会看到更复杂的类型吗?

通过花界面查看结果时,我们看到:

当转到 /tasks?state=FAILURE 的失败视图时,我们在那里只看到 2 个失败的任务。单击 UUID 时,我们会转到任务视图,说 task/fdb7b30f-d9cf-4b60-a1b4-11d6aee241b3 我们会看到详细信息,包括参数、异常和跟踪。

转到成功视图时 /tasks?state=SUCCESS 我们看到 10K 个条目。但是对于列表中最早的任务,相应的任务视图告诉我们 Unknown task '377cc204-cb5e-41bc-9aa8-194679ac9bce'。对于后面的任务,我们可以看到一些信息。

结果后端redis用了将近500MB的内存,但似乎只能访问很少的信息。

我们有没有办法访问所有这些失败任务的详细信息? (可能调整了我们看起来有点破损的设置)。

据我所知,Flower 将任务信息保存在内存 (RAM) 中,与 celery 后端无关。

Celery 后端用于通过自己的 TTL 机制(在您的情况下是简单的 Redis ttl)检索异步任务的结果。

Flower 刚刚注册到经纪人的队列并查看所有事件。

如果你想让 Flower 保留更多任务(也就是增加历史大小),我认为你应该增加 Flower 配置中的 max-tasks。 (默认值=10k)。 docs.

中有更多详细信息