Celery任务历史记录

5
我正在构建一个基于Celery框架的任务执行框架。
我想查看最近2-7天内已执行任务的列表。
我查找了API,发现了app.backend对象,但无法找出如何查询以获取任务。
例如,我可以使用Redis或数据库等后端。我不想显式地编写针对数据库的SQL查询。
是否有一种方法可以通过API处理任务历史记录/结果?
我尝试使用Flower,但它只能处理事件,并且无法获取其启动之前的历史记录。

3
请查看django-celery,我认为它已经为任务提供了管理界面。 - Ale
看起来你可能是对的。我本不想在这个项目中使用Django,但很可能我需要djcelery提供的相同功能。 - baldr
2个回答

6
您可以使用persistent选项,例如:flower -A ctq.celery --persistent=True

为什么被踩了?这个观点看起来很合理啊。如果有人给了负面评价,请解释一下,因为我想知道为什么这个想法不好。 - digitaldavenyc
这不是个坏主意。因为我用了中文而被踩了!23333 - 杨冠宇

4

是的,我已经尝试过那种方法,但是它不起作用。这就是为什么我在问了。在Flower的源代码中,我发现它只能通过事件来工作。通过后端API可以获得之前任务的结果,但只能知道任务的ID。很可能djcelery是最适合我的需求的选择。 - baldr
@Kapucko,我留了一个用celery解决这个问题的想法。当任务开始时,我在数据库中创建了一个新记录。最终我将项目切换到了django。 - baldr
@baldr谢谢您的回复。您能告诉我Django在这种情况下提供了哪些优势吗? - Kapucko
@Kapucko,不仅仅是这个例子,我更喜欢Django的灵活性和项目结构。使用模型和迁移管理数据库非常成熟和容易。 - baldr
只想提醒一下,自 Celery 4.0 版本起引入了新的小写设置,因此 CELERY_TASK_RESULT_EXPIRES 现在应该使用 result_expires 进行配置。 - aaronbriel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接