Python未使用持久DNS缓存';s socket.getaddrinfo/mercurial
当我通过一个调制解调器/ISP连接时,我的Ubuntu机器上的DNS查找速度非常慢。我按照说明(比如那些)使用持久DNS缓存,这样我就不会重复DNS查找,一切都变得更快了。然而,我注意到,在对mercurial进行回购交易时,即使转移非常小的变动,速度也非常缓慢。深入查看,我发现所有的时间都被Python未使用持久DNS缓存';s socket.getaddrinfo/mercurial,python,sockets,caching,mercurial,dns,Python,Sockets,Caching,Mercurial,Dns,当我通过一个调制解调器/ISP连接时,我的Ubuntu机器上的DNS查找速度非常慢。我按照说明(比如那些)使用持久DNS缓存,这样我就不会重复DNS查找,一切都变得更快了。然而,我注意到,在对mercurial进行回购交易时,即使转移非常小的变动,速度也非常缓慢。深入查看,我发现所有的时间都被\u socket.getaddrinfo占用,即DNS查找。为什么即使所有web浏览器都使用/etc/pdnsd.conf中的信息来使用旧的dns查找,pythons套接字却不这样做呢。如何让mercur
\u socket.getaddrinfo
占用,即DNS查找。为什么即使所有web浏览器都使用/etc/pdnsd.conf
中的信息来使用旧的dns查找,pythons套接字却不这样做呢。如何让mercurial使用缓存查找
更新
也可能是因为尝试同时获取ipv4和ipv6地址,并且仅在找不到ipv6地址后返回答案。但我不确定如何检查这一点,即延迟是由于ipv6、非持久性还是两者兼而有之
更新
这可能与ipv6请求有关,正如答案中所建议的,一旦有机会,我将不得不检查一下。多亏了python列表中的这一点,如果您使用BIND,那么python的getaddrinfo将使用缓存的DNS查找。安装并启动BIND后,会立即重复DNS查找。Pythons套接字。getaddrinfo()使用操作系统的getaddrinfo()(通过libc)。-这与Python毫无关系。如果PDN已配置为在解析链中,则不同的解析速度由不同的请求决定请更仔细地查看哪些确切的getaddrinfo()请求是快的,哪些是慢的。我认为引用的电子邮件现在已移动到