Python Celery 任务的状态

ghu*_*ill 0 python long-polling redis celery flask

我想知道在将 celery 任务部署到工作人员后,有哪些选项可用于从浏览器监控 celery 任务?

我当前的应用程序堆栈是一个在扭曲内部运行的烧瓶应用程序,使用 celery 运行数十到数千个小型后台任务(更新存储库中的元数据,创建图像衍生品等)我设想使用 ajax 长轮询来监视状态由用户启动的 celery 任务。我将 redis 用于后端代理和结果。

我看到 celery 有一些命令行方法来监控任务,或者有一个 web 仪表板的。但是,如果我想从发送到 celery 的特定任务中查看更详细的状态,那么该任务打印/写入日志文件,然后长轮询该文件以获取来自flask前端的更改是否更有意义?

此时用户可以说“更新这10,000个项目”,任务被发送到celery,前端很快就说,“作业已发送!”。而且任务确实完成了。但是我想让用户导航到“/status”并查看那 10,000 个小作业的状态 - 即使是滚动日志文件也可能会起作用。

任何建议将不胜感激。花了很多挠头,使这一步勾画出来的东西,但我纺纱我的车轮正好搞清楚什么从用户前端长查询。

Jan*_*sky 5

试试 Jobstatic,它扩展了 Celery。

从项目描述:

Jobtastic为您提供以下好处:

  • 简单的进度估计/报告
  • 工作状态反馈
  • 优雅地处理死任务代理的辅助方法(delay_or_eager 和 delay_or_fail)
  • 超级简单的结果缓存
  • 避雷群
  • 与 celery jQuery 插件集成,便于客户端进度显示
  • 任务运行中的内存泄漏检测