如何从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。预计不会看到更复杂的类型吗?
通过花界面查看结果时,我们看到:
- 已处理 376K
- 8K 失败
- 368K 成功
- 86 次重试
当转到 /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.
中有更多详细信息
我们有一个 (django) celery 设置,其中一个 redis 数据库作为代理,另一个作为结果后端。
检查结果后端redis中的键,我们看到485K个字符串类型的键和7个none类型的键。一个键的例子是:celery-task-meta-26351389-c077-4ba6-8e34-66731f6636b3
。我假设 26351389-c077-4ba6-8e34-66731f6636b3
是任务 ID。预计不会看到更复杂的类型吗?
通过花界面查看结果时,我们看到:
- 已处理 376K
- 8K 失败
- 368K 成功
- 86 次重试
当转到 /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.