前面一系列celery的文章算是从0到1将celery的架构,原理以及核心功能比较完整的呈现给大家,本文则基于运维的角度介绍如何在生产上运维celery。
本文算是介绍Celery系列基础知识的收尾,当然以后也可能会继续写相关实践的文章,我们目前的任务管理是基于Celery的二次开发,有赞DBA组的小伙伴王航威在杨建荣老师的自动化运维群分享过,后续会将文章发布到这里。
我们自己研究学习celery的时候一般开启多个窗口来启动celery进程和观察日志,但是生产上则不能这样操作,太不专业了。我们需要将celery以守护进程或者daemonize模式运行,常见的方法是 使用nohup 命令,nohup不方便自动启停,我们可以通过前面介绍过supervisor来实现进程启停管理。参考zandb中的配置:
celery 进程的管理
flower 监控进程的管理
查看进程的状态
Celery Flower是基于web的监控和管理Celery的工具。支持
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/
首页
worker 的状态
tasks 执行历史
监控显示任务的执行成功失败状态,和任务的执行时间,这里没有使用队列,如果启用了队列,则会显示队列的状态。 这个页面的监控是web 页面启动以来的,如果刷新页面之后 会重新监控,也就是说不会显示历史状态。
四 推荐阅读
分布式任务管理系统 Celery 之一
分布式任务管理系统 Celery 之二
分布式任务管理系统 Celery 之三
分布式任务队列系统 Celery 之四
supervisor 工具介绍