用于与runit/daemontools主管通信的工具。
supervise的Python项目详细描述
此模块提供一个方法来处理基于runit或daemontools的 监督服务,使用提供的控制文件。这是一个小的 示例:
>>> import supervise >>> s = supervise.Service('test') >>> print s.status() {'action': None, 'status': 0, 'uptime': 300L, 'pid': None} >>> s.start() >>> print s.status() {'action': None, 'status': 1, 'uptime': 3L, 'pid': 27450}
阅读runsv(8)的手册页了解更多信息。也请阅读
了解如何分析状态的ServiceStatus
文档
信息。
历史记录
上个月我需要在一些服务器上安装runit来监督 服务。很遗憾,我的管理界面无法处理 我决定用python编写一个小模块来解决 这个障碍,这就是结果!.
使用这个模块,您可以在python环境中处理许多runit 剧本。我想这可能对Daemontools也有用,但我没有 测试一下。让我们看一个例子:
>>> import supervise >>> c = supervise.Service("/var/service/httpd") >>> print s.status() {'action': 'normal', 'status': 'up', 'uptime': 300L, 'pid': None} >>> if s.status()['status'] == supervise.STATUS_DOWN: print "service down" service down >>> s.start() >>> if s.status()['status'] == supervise.STATUS_UP: print "service up" service up
我个人使用这个模块和rpyc库来远程管理 在主机中运行的服务,但是制作一个web界面太容易了, 使用瓶子的示例:
import supervise import simplejson from bottle import route, run @route('/service/status/:name') def service_status(name): return simplejson.dumps( supervise.Service("/var/service/" + name).status() ) @route('/service/up/:name') def service_up(name): c = supervise.Service("/var/service/" + name) c.start() return "OK UP" @route('/service/down/:name') def service_down(name): c = supervise.Service("/var/service/" + name) c.down() return "OK DOWN" if __name__ == "__main__": run()
现在你可以停止你的服务只需指向你的浏览器 http://localhost/service/down/httpd(在本例中为关闭http服务)。
享受吧!
author: | Andres J. Diaz <ajdiaz@connectical.com> |
---|---|
date: | 2009-11-21 |
maintainer: | Peter Ruibal <ruibalp@gmail.com> |