芹菜:列出所有任务,计划的,活动的*和*完成
Posted
技术标签:
【中文标题】芹菜:列出所有任务,计划的,活动的*和*完成【英文标题】:Celery: list all tasks, scheduled, active *and* finished 【发布时间】:2012-08-31 06:58:35 【问题描述】:赏金更新
如果可能的话,我想要一个不涉及监控线程的解决方案。
我知道我可以使用我的应用程序Control
的Inspect
类查看计划的 和活动的 任务。
i = myapp.control.inspect()
currently_running = i.active()
scheduled = i.scheduled()
但我找不到任何功能来显示已完成的任务。我知道这些信息必须至少可以暂时访问,因为我可以通过task_id
查找已完成的任务:
>>> r = my task.AsyncResult(task_id=' ... ')
>>> r.state
u'SUCCESS'
如何获得完整计划、活动和已完成任务的列表?或者可能同时列出所有个任务?
【问题讨论】:
我同意该信息是可检索的。我使用花,花应用程序可以检索所有任务的状态。我发现后端有一个缓存字典,但只存储了几个任务myapp.backend._cache
。 Flower有一个restful api,我认为您可以在您的Web监控应用程序中使用它,但它必须是另一种方式......
【参考方案1】:
Celery Flower 实时显示任务(活动、finished、保留等)。它可以按时间、工人和类型过滤任务。
https://github.com/mher/flower
【讨论】:
我需要在网站中集成监控解决方案,所以很遗憾我不能使用像花这样的开箱即用解决方案。但无论如何我都会调查它,因为它支持我的假设,即信息确实是可检索的。所以谢谢你的提示。 +1 看看它在flower中是如何实现的或者使用flower api 我正在尝试解决任务信息存储位置的难题...我可以在 Flower 中浏览 2000 个已完成的任务,但是配置为代理和结果后端的 redis 数据库都是空的(没有键).. . 我想我应该在那里看到一些东西? Flower 将它们存储在内存中 - 如果您重新启动它,所有(至少所有已完成的)任务都会消失。【参考方案2】:不需要监控线程的一个选项是 Celery on_success
处理程序(使用引导步骤功能 in 3.1+) - 这需要将相关信息写入您自己的数据存储区。
可能更好的选择,需要更少的代码,以类似的方式使用task_success signal,记录您以后需要的信息。
Flower 选项可能更简单,因为您在任务完成时查询 Flower 已经维护的信息 - 请参阅 this answer。
【讨论】:
以上是关于芹菜:列出所有任务,计划的,活动的*和*完成的主要内容,如果未能解决你的问题,请参考以下文章