分布式任务队列celery之五

>>强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!

一 简介

前面一系列celery的文章算是从0到1将celery的架构,原理以及核心功能比较完整的呈现给大家,本文则基于运维的角度介绍如何在生产上运维celery。

本文算是介绍Celery系列基础知识的收尾,当然以后也可能会继续写相关实践的文章,我们目前的任务管理是基于Celery的二次开发,有赞DBA组的小伙伴王航威在杨建荣老师的自动化运维群分享过,后续会将文章发布到这里。

二 部署

我们自己研究学习celery的时候一般开启多个窗口来启动celery进程和观察日志,但是生产上则不能这样操作,太不专业了。我们需要将celery以守护进程或者daemonize模式运行,常见的方法是 使用nohup 命令,nohup不方便自动启停,我们可以通过前面介绍过supervisor来实现进程启停管理。参考zandb中的配置:

celery 进程的管理

分布式任务队列celery之五

flower 监控进程的管理

分布式任务队列celery之五

查看进程的状态

分布式任务队列celery之五

三 监控

Celery Flower是基于web的监控和管理Celery的工具。支持

用Celery事件实时监控
  1. 任务进程和历史 

  2. 能够显示任务的详细信息(arguments, start time, runtime等)

  3. 图形化和统计

远程控制
  1. 查看worker状态和统计

  2. 关闭和重启worker实例

  3. 控制进程池大小,平滑配置(autoscale settings)

  4. 查看和修改一个worker实例消费的队列

  5. 查看当前正在运行的tasks

  6. 查看计划任务(ETA(估计到达的时间)/倒计时)

  7. 应用时间和速率限制

  8. 配置浏览器(Configuration viewer)

  9. 撤销或终止任务

Broker monitoring(中间人监控)
  1. 查看所有Celery 队列的统计

  2. 队列长度图

flower 安装:

$ pip install flower

或者

$ easy_install flower

flower 使用 首先启动通过命令行启动 flower 进程:

$ flower -A proj --port=5555

启动flower时需注意默认监控redis 0号数据库 ,如果celery配置的broker不是0,则需要在启动flower的时候指定,例如

flower --port=5555 --broker=redis://localhost:6379/3 --broker_api=redis://localhost:6379/3 

然后打开浏览器 http://localhost:5555/

分布式任务队列celery之五

首页

分布式任务队列celery之五

worker 的状态

分布式任务队列celery之五

tasks 执行历史

分布式任务队列celery之五

监控显示任务的执行成功失败状态,和任务的执行时间,这里没有使用队列,如果启用了队列,则会显示队列的状态。 这个页面的监控是web 页面启动以来的,如果刷新页面之后 会重新监控,也就是说不会显示历史状态。

分布式任务队列celery之五

四 推荐阅读

分布式任务管理系统 Celery 之一

分布式任务管理系统 Celery 之二

分布式任务管理系统 Celery 之三

分布式任务队列系统 Celery 之四

supervisor 工具介绍

原文始发于微信公众号(yangyidba):分布式任务队列celery之五