我正在构建一个在 Celery 框架之上执行任务的框架。
我想查看最近执行的任务列表(最近 2-7 天)。
在 API 上,我可以找到app.backend
对象,但无法弄清楚如何进行查询以获取任务。
例如,我可以使用像 Redis 或数据库这样的后端。我不想显式将SQL查询写入数据库。
有没有办法使用 API 处理任务历史记录/结果?
我尝试使用Flower,但它只能处理事件,无法在开始之前获取历史记录。
您可以使用 persisent 选项,例如: flower -A ctq.celery --persistent=True
您需要将任务结果保留在后端,例如 Redis。Celery 文档包含有关如何执行此操作的信息:
http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html#keeping-results
此外,您还需要设置 CELERY_TASK_RESULT_EXPIRES 配置参数,因为默认情况下,结果会在一天后被丢弃。
如果这样做,则 Flower 将显示任务执行的历史记录,无论它从何时开始。