Skip to main content

扩展Supervisor的XML-RPC API

Supervisor可以扩展新的XML-RPC API。已经存在几个第三方插件,可以连接到您的Supervisor配置。你可以另外写自己的。可扩展的XML-RPC接口是一个高级功能,在3.0版本中引入。你不需要理解它,除非你想使用现有的第三方RPC接口插件,或者如果你想编写自己的RPC接口插件。

配置XML-RPC接口工厂

通过在Supervisor配置文件中添加 [rpcinterface:x] 部分,可将另一个RPC接口配置为管理程序安装。

在示例配置文件中,有一个名为 [rpcinterface:supervisor] 的部分。默认情况下,它看起来像这样:

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

本节 must 保留在配置中,用于标准安装的监控器正常工作。如果你不想让管理员做任何事情,它还没有开箱即用,这是所有你需要知道的这种类型的部分。

但是,如果您希望向管理程序的配置添加附加的XML-RPC接口命名空间,则可以添加附加的 [rpcinterface:foo] 段,其中“foo”表示接口的命名空间(从Web根),并且由 supervisor.rpcinterface_factory 命名的值为一个用Python编写的工厂调用,它应该有一个函数签名,它接受一个单一的位置参数 supervisord 以及执行配置所需的许多关键字参数。在 rpcinterface:foo 部分中定义的任何键/值对将作为关键字参数传递给工厂。这里是一个工厂函数的例子,在包 my.package 中创建。

def make_another_rpcinterface(supervisord, **config):
    retries = int(config.get('retries', 0))
    another_rpc_interface = AnotherRPCInterface(supervisord, retries)
    return another_rpc_interface

并且配置文件中的一个部分意味着配置它。

[rpcinterface:another]
supervisor.rpcinterface_factory = my.package:make_another_rpcinterface
retries = 1