Almacenamiento en caché de DNS persistente no utilizado por socket.getaddrinfo / mercurial de Python

Solía ​​tener búsquedas de DNS muy lentas en mi máquina Ubuntu cuando me conectaba a través de un módem / ISP. Seguí las instrucciones (como las de aquí ) para usar el almacenamiento en caché de DNS persistente, así que no hago búsquedas de DNS repetidas y todo se volvió mucho más rápido. Sin embargo, noté que al tirar / empujar repos en mercurial, era dolorosamente lento incluso para transferir cambios muy pequeños. Mirando más a fondo, descubrí que todo el tiempo lo tomaba _socket.getaddrinfo , es decir, las búsquedas de DNS. ¿Por qué es que a pesar de que todos los navegadores web usan la información en /etc/pdnsd.conf para usar las búsquedas dns antiguas, los sockets de pythons no lo hacen? ¿Cómo puedo obtener mercurial para utilizar las búsquedas en caché?

Actualizar

También puede deberse a que getaddrinfo intenta obtener las direcciones ipv4 e ipv6, y solo devuelve la respuesta cuando no encuentra la dirección ipv6. Sin embargo, no estoy seguro de cómo verificar esto, es decir, si el retraso se debe a ipv6, no a la persistencia o ambos.

Actualizar

Puede estar relacionado con las solicitudes de ipv6, como se sugiere en la respuesta aquí , tendré que verificar que una vez que tenga la oportunidad.

Gracias a esta publicación en la lista de python, parece que si usa BIND, entonces getaddrinfo de python usa búsquedas de DNS en caché. Después de instalar BIND e iniciarlo, las búsquedas de DNS repetidas son instantáneas.

Pythons socket.getaddrinfo () usa getaddrinfo () (sobre libc) del sistema operativo. – Esto no tiene nada que ver con Python en absoluto . Si pdns ya está configurado para estar en la cadena de resolución, entonces diferentes velocidades de resolución están enraizadas por diferentes solicitudes. – Observe más de cerca qué solicitudes exactas de getaddrinfo () son rápidas y lentas.