用于与runit/daemontools主管通信的工具。

supervise的Python项目详细描述


此模块提供一个方法来处理基于runitdaemontools的 监督服务,使用提供的控制文件。这是一个小的 示例:

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用java从mysql备份特定的表   方法引用中的java错误返回类型:无法转换反应器。果心出版商单核反应堆。果心出版商单声道?扩展R>   java为什么我的e4应用程序插件不能被调用   swing为什么在java中JComboBox的ListCellRenderer上出现类强制转换异常?   java无直接方法<init>(Ljava/lang/reflect/method;IL2/Converter;)V类Lretrofit2/ParameterHandler$Body   java监控BufferedInputStream下载进度   java Springboot外部文件数据库配置   java Selenium WebDriver StaleElementReferenceException在使用click()时出现异常   在java中对传递给静态函数的参数的更改   为什么x==(x=y)和(x=y)=x不一样?   java我应该为我的应用程序创建一个片段吗?   java HashMap何时以及如何将bucket从链表转换为红黑树?   java文件读/写的正确顺序   在java中在哪里使用对象类?   javacom。数据税。驾驶员果心例外情况。InvalidQueryException:未配置的表架构\u键空间   Java如何在Arangodb上创建边?