Python 的 xmlrpc 非常慢:每次调用一秒钟

Posted

技术标签:

【中文标题】Python 的 xmlrpc 非常慢:每次调用一秒钟【英文标题】:Python's xmlrpc extremely slow: one second per call 【发布时间】:2013-01-08 09:25:03 【问题描述】:

根据 Python 文档中的示例,我使用 SimpleXMLRPCServer 在 Python 中构建了一个 xml-rpc 服务器。我从同一台机器上的 Python 客户端调用它。服务器函数的主体自行执行非常快。

但我发现 xmlrpc 客户端的性能非常缓慢,每次调用需要一秒钟。 (使用 xmlrpclib。)

我在网上找到的加速技术 (skipping the getfqdn resolution) 没有帮助。

我的连接 URI 是:

'http://localhost:50080'

我在 Windows 7 上运行 Python 2.7 x64,但它在 32 位 Python 2.7 上运行相同。

【问题讨论】:

【参考方案1】:

问题似乎在于客户端解析 localhost

新的(快速)连接 URI:

'http://127.0.0.1:50080'

同样,在hosts文件%SystemRoot%\System32\drivers\etc\hosts中加入这一行,效果基本相同:

127.0.0.1 本地主机

这些更改都将速度从 1 次调用/秒提高到 88 次调用/秒,并且跳过 getfqdn 解析可能会稍微加快速度。容量不是很大,但我的应用程序可以接受。

更正:新的性能不是 88 次调用/秒,而是 ~1000 次调用/秒。

【讨论】:

可以确认。使用 PyMols xmlrpc 服务器遇到了这个问题,它非常非常慢。 Hosts 文件中注释了 127.0.0.1 localhost 行。只需取消注释即可解决问题。太好了! 注意:使用本地主机可能是危险的。如果某些系统管理员在某些 DNS 服务器中粘贴“localhost.yourdomain.com”,那么您的所有程序都会停止工作。我更喜欢 127.0.0.1 ... 直接。

以上是关于Python 的 xmlrpc 非常慢:每次调用一秒钟的主要内容,如果未能解决你的问题,请参考以下文章

使用 XMLRPC 在 Python 中进行动态函数调用

python xmlrpc

10 分钟入门 python rpc 实现

用XMLRPC开服务进行server/client通信

python3 xmlrpc client带cookie请求的类

调用外部 egrep 和 less 时子进程非常慢