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