跳转到主要内容

supervisor插件和工具

项目描述

简介

mr.laforge 是一个为 supervisord 开发的实用工具和插件。

它允许您轻松确保 supervisord 以及它控制的特定进程在shell和Python脚本中运行。

插件部分增加了向进程发送信号的 kill 命令。

使用方法

作为脚本安装

使用它的方法之一是将它作为脚本安装。这也是在shell脚本中使用它的方法。您可以将其作为egg安装,也可以在buildout中安装。

[mr.laforge]
recipe = zc.recipe.egg
eggs = mr.laforge

无论哪种方式,您都会得到 supervisorupsupervisordownwaitforports 脚本。

不带参数运行 supervisorup 将检查 supervisord 是否正在运行,如果没有运行,则启动它。您还可以在命令行上提供进程名称,如果它们尚未运行,则将启动它们。

supervisordown 脚本与 supervisorup 做同样的事情,但确保进程已被停止。这对于初始化开发数据库等任务非常有用。

使用 waitforports 您可以检查一个或多个进程是否正在指定的端口上监听。脚本有一些额外的参数,您可以通过 -h--help 列出。

您可以将 supervisor_args 关键字参数设置为设置 supervisorup 脚本的 supervisor 参数,如配置文件位置

[mr.laforge]
recipe = zc.recipe.egg
eggs = mr.laforge
arguments = supervisor_args=['-c', 'etc/my_supervisord.conf']

或者,也可以通过 MR_LAFORGE_SUPERVISOR_ARGS 环境变量设置 supervisor 参数。

从Python脚本中使用

您可以在 mr.laforge 中使用 up 方法,这与 supervisorup 脚本类似,都接受进程名称作为参数。

一个例子是类似这样的 buildout 中的 zc.recipe.testrunner 部分

[test]
recipe = zc.recipe.testrunner
eggs =
    ...
    mr.laforge
initialization =
    import mr.laforge
    mr.laforge.up('solr-test')

如您所见,您必须添加 egg,这样它就可以被 zc.recipe.testrunner 创建的 test 脚本中的初始化代码导入。 up 调用将 solr-test 作为参数,以确保 solr-test 进程在测试期间正在运行。

另一个例子是 zc.recipe.egg 创建的脚本中的初始化片段

[paster]
recipe = zc.recipe.egg
eggs =
    ...
    mr.laforge
dependent-scripts = true
scripts = paster
initialization =
    import mr.laforge
    mr.laforge.up('solr')

现在,每次您运行由该脚本创建的 paster 脚本时,都会检查 supervisord 以及它控制的 solr 进程是否正在运行。

可以用来确保进程已停止的 down 方法是 supervisordown 脚本的基础。它的用法与上面的 up 方法类似。

waitforports 脚本的等效方法是 mr.laforge.waitforports。它接受一个端口列表作为参数,这些参数可以是整数或字符串,也可以包含由冒号分隔的主机。您还可以使用 host 关键字参数设置默认主机,以及使用 timeout 关键字参数设置超时值。以下是一个示例

mr.laforge.waitforports(8080, 'db-server.example.com:5432', timeout=10)

还有一个 shutdown 函数,您可以使用它从 Python 代码中关闭 supervisord。

作为插件添加到 supervisord

要使用 mr.laforge 的插件部分,您必须将以下内容添加到您的 supervisord 配置中

[rpcinterface:laforge]
supervisor.rpcinterface_factory = mr.laforge.rpcinterface:make_laforge_rpcinterface

[ctlplugin:laforge]
supervisor.ctl_factory = mr.laforge.controllerplugin:make_laforge_controllerplugin

您必须确保 supervisord 可以导入 mr.laforge。在 buildout 中,您必须像这样将 egg 添加到 supervisor

[supervisor]
recipe = zc.recipe.egg
eggs =
    supervisor
    mr.laforge

现在,您可以使用 kill 命令了

./bin/supervisorctl kill HUP nginx

变更日志

0.9 - 2019-09-15

  • 修复 Python 3.x 的 controllerplugin 导入。[fschulze]

0.8 - 2018-07-10

  • 修复 Python 3.x 的 do_kill。[fschulze]

0.7 - 2018-07-02

  • 添加 Python 3.x 支持。[fschulze]

  • 添加 socket 的超时,这样我们就不会在不可用的主机上挂起。[fschulze]

0.6 - 2012-10-06

  • 添加 supervisordown 脚本和相应的 down 方法,以确保进程已停止。[fschulze]

0.5 - 2012-05-23

  • 允许通过 MR_LAFORGE_SUPERVISOR_ARGS 环境变量设置 supervisor 参数。[witsch]

  • 添加 shutdown 函数,可以从 Python 代码中关闭 supervisord。[fschulze]

0.4 - 2012-05-09

  • 添加 waitforports 脚本和函数,等待进程在指定的端口上监听。[fschulze, witsch]

0.3 - 2012-04-03

  • 不要将命令行选项传递给 supervisor 代码。[fschulze]

  • up 函数添加 supervisor_args 关键字参数。[fschulze, witsch (Andreas Zeidler)]

0.2 - 2011-04-20

  • 添加带有 kill 命令的 supervisord 插件,以向进程发送信号。[fschulze]

0.1 - 2011-04-20

  • 初始版本

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

mr.laforge-0.9.tar.gz (7.0 kB 查看散列)

上传于

构建发行版

mr.laforge-0.9-py2-none-any.whl (8.2 kB 查看哈希值)

上传于 Python 2

支持者