【问题标题】:Improving speed of xmlrpclib提高 xmlrpclib 的速度
【发布时间】: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 提到它一次解析一个字符。我相信这是相关的,但同样不知道如何更改此设置。

【问题讨论】:

    标签: python xmlrpclib


    【解决方案1】:

    除非您的请求或响应的体积非常大,否则更改解析器不太可能影响周转时间(因为 CPU 比网络快得多)。

    如果可能,您可能需要考虑向设备发送多个命令,而无需等待第一个命令的响应。如果设备可以一次处理多个请求,那么这可能是有益的。即使设备只按顺序处理请求,您仍然可以让下一个请求在设备上等待,这样在处理前一个请求之后就没有延迟。如果设备以这种方式序列化请求,那么这将是您能做的最好的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      • 2011-06-14
      相关资源
      最近更新 更多