由于开销和等待RPC响应的原因,这并不像期望的那样快。
我的主要问题是,如何减少这种开销,使这种功能成为可能?我知道显而易见的解决方案是抛弃XML-RPC,但我不认为这对于这个设备是可能的,因为我无法控制从“服务器”实现任何其他协议。MultiCall必须在服务器端实现吗?例如,如果服务器已经实现了method1()、method2()和method3(),那么这段代码应该在一个回复中执行它们吗?
server=xmlrpclib.ServerProxy(serverURL)
multicall=xmlrpclib.MultiCall(server)
multicall.method1()
multicall.method2()
mutlicall.method3()
multicall()此外,在查看xmlrpclib的源代码时,我看到了对"FastParser“的引用,而不是对使用的默认used的引用。但是,我无法确定如何在默认情况下启用此解析器。此外,the comment on this answer提到它一次解析一个字符。我相信这是相关的,但再说一次,我不知道如何改变这个设置。
发布于 2012-07-24 08:38:24
除非请求或响应的大小非常大,否则更改解析器不太可能影响周转时间(因为CPU比网络快得多)。
如果可能,您可能需要考虑向设备发送多个命令,而不等待第一个命令的响应。如果设备可以一次处理多个请求,那么这可能是有益的。即使设备只按顺序处理请求,您仍然可以让下一个请求在设备上等待,以便在处理前一个请求后不会有延迟。如果设备以这种方式序列化请求,那么这将是您所能做的最好的事情。
https://stackoverflow.com/questions/11512525
复制相似问题