我正在使用一个本质上是黑匣子的设备,它唯一已知的通信方法是 XML-RPC。它适用于大多数需求,除了当我需要非常快速地执行两个命令时。由于开销和等待 RPC 响应,这并不像期望的那么快。
我的主要问题是,如何减少这种开销以使此功能成为可能?我知道显而易见的解决方案是放弃 XML-RPC,但我认为这对这个设备来说是不可能的,因为我无法控制从“服务器”实现任何其他协议。这也使得无法进行 MultiCall,因为我无法为 MultiCall 添加有效指令。MultiCall 是否必须在服务器端实现?例如,如果我已经由服务器实现了 method1()、method2() 和 method3(),那么这段代码是否应该在一个回复中执行它们?到目前为止,我假设我的测试没有,因为文档显示了我需要在服务器端初始化命令的示例。
server=xmlrpclib.ServerProxy(serverURL)
multicall=xmlrpclib.MultiCall(server)
multicall.method1()
multicall.method2()
mutlicall.method3()
multicall()
此外,查看 xmlrpclib 的源代码,我看到对“FastParser”的引用,而不是使用的默认值。但是,我无法确定如何在默认情况下启用此解析器。此外,对此答案的评论提到它一次解析一个字符。我相信这是相关的,但同样,不知道如何更改此设置。