如何获得在芹菜失败的任务?

我正在使用芹菜来处理一些任务。 我可以看到有多less活动或计划等,但我无法find任何方式来查看失败的任务。 花确实显示了状态,但只有在任务开始和失败时才运行。 有没有任何命令来获取所有失败的任务(STATUS:FAILURE)?

任务创build时,我确实有任务ID。 但是其中有数百万。 所以即使有办法通过任务ID来检查,​​我也不能一一检查。 但如果有这样的命令,请让我知道。

芹菜不容易找到一个失败的任务,但花 (主要芹菜管理网络应用程序)确实简化了这一点。 即使完成任务ID,它也会保留一个记录,并且有一个API让您只能找到失败的任务。

Flower的基本HTTP API包括/api/tasks 端点 – 你可以使用/api/tasks?state=FAILURE来只显示失败的任务,然后解析JSON来提取你所需要的。 内容与您在Web API中获得的内容类似,并且使用jq : curl和格式/过滤器进行原型创建很容易:

 curl -s 'http://localhost:5555/api/tasks?state=FAILURE&limit=5' | jq . | less 

花当然需要安装和运行。

由于您拥有数百万个已完成的任务,因此您可能需要在数据存储区中捕获失败的任务信息才能有效访问 – 也许Flower会提供帮助。 或者你可以尝试在芹菜自定义故障处理程序捕获失败的任务信息 – 看到这个答案 。

task id具有statestatus属性。 所以你可以通过id来获得任务的状态。

 my_task_id = my_task.delay(foo) my_task_id.state my_task_id.status 

给出状态是否为PENDING,STARTED,RETRY,FAILURE或SUCCESS。

afaik,芹菜只显示活动,预定,保留,撤销但id不显示失败的任务。

既然你有所有的任务ID,你可以循环他们的状态。

 for task_id in task_id_list: if task_id.state == 'FAILURE' print(task_id)