2 Star 0 Fork 0

mirrors_fmoo/python-supervise

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Python supervise

This module provide a methods to handle runit or daemontools based supervised services, using the control file provided. Here is a small example:

>>> 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}

Read the manpage of runsv(8) for more information. Also read the documentation for ServiceStatus to known how to parse status information.

History

Last month I needed to install runit in some servers to supervise a couple of services. Unfortunately my management interface cannot handle the services anymore, so I decided to write a small module in python to solve this handicap, and that is the result!.

With this module you can handle in python environment a number of runit scripts. I think that this might be work for daemontools too, but I do not test yet. Let's see an example:

>>> 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

Personally I use this module with rpyc library to manage remotely the services running in a host, but it too easy making a web interface, for example using bottle:

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()

Now you can stop your service just only point your browser http://localhost/service/down/httpd (to down http service in this case).

Enjoy!

author: Andres J. Diaz <ajdiaz@connectical.com>
date: 2009-11-21
maintainer: Peter Ruibal <ruibalp@gmail.com>

空文件

简介

取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/mirrors_fmoo/python-supervise.git
git@gitee.com:mirrors_fmoo/python-supervise.git
mirrors_fmoo
python-supervise
python-supervise
master

搜索帮助