23

赏金更新

如果可能的话,我想要一个不涉及监控线程的解决方案。


我知道我可以使用我的应用程序类查看计划任务和活动任务。InspectControl

i = myapp.control.inspect()

currently_running = i.active()
scheduled = i.scheduled()

但我找不到任何功能来显示已完成的任务。我知道这些信息必须至少可以暂时访问,因为我可以通过它来查找已完成的任务task_id

>>> r = my task.AsyncResult(task_id=' ... ')
>>> r.state
u'SUCCESS'

如何获得计划、活动和已完成任务的完整列表?或者可能同时列出所有任务?

4

2 回答 2

8

Celery Flower实时显示任务(活动、完成、保留等)。它可以按时间、工人和类型过滤任务。

https://github.com/mher/flower

于 2012-09-07T07:45:22.987 回答
1

不需要监视线程的一个选项是 Celeryon_success处理程序(使用3.1+中的引导步骤功能) - 这需要将相关信息写入您自己的数据存储。

可能更好的选择,需要更少的代码,以类似的方式使用task_success 信号,记录您以后需要的信息。

Flower 选项可能更简单,因为您在任务完成时查询 Flower 已经维护的信息 - 请参阅此答案

于 2015-10-03T06:36:13.007 回答