首页 > 解决方案 > 使用 rpc 创建用于控制守护进程的 CLI 客户端

问题描述

我想为守护进程构建一个 cli 客户端。要构建 cli,我想使用 cli 库,例如 click 或 fire(其他也可以)。我以为我可以使用 rpc 来控制守护程序功能,但这似乎不起作用。

我使用点击尝试了以下方法:


######## Daemon ########

from xmlrpc.server import SimpleXMLRPCServer
from xmlrpc.server import SimpleXMLRPCRequestHandler
import click

@click.group()
def cli():
    pass

@cli.command()
@click.argument("a")
@click.argument("b")
def add(a,b):
    return a + b

@cli.command()
@click.argument("a")
@click.argument("b")
def subtract(a,b):
    return a - b

with SimpleXMLRPCServer(('localhost', 8000), requestHandler=RequestHandler) as server:
    server.register_introspection_functions()
    server.register_function(cli)

客户是

    ####### Client ########
    import xmlrpc.client
    
    port = 8000
    proxy_address = "http://localhost:" + str(port) + "/"
    
    with xmlrpc.client.ServerProxy(proxy_address) as proxy:
        proxy.cli()

我在这里得到的错误是:AttributeError: 'Group' object has no attribute '__name__'server.register_function(cli)守护进程中。

假设我可以解决这个问题,我会遇到cli函数输出在守护进程而不是客户端中打印的问题。

我试图找到一个本地处理这个问题的 cli 客户端,但我能找到的只是https://github.com/F483/apigen,它已经 5 年没有更新了。

有用的链接:

标签: pythoncommand-line-interfaceipcrpc

解决方案


推荐阅读