2011-07-07 2 views
4

1つのモデム/ ISPを介して接続するとき、UbuntuマシンでDNS検索が非常に遅くなりました。私は指示(例えば、hereなど)に従って永続的なDNSキャッシングを使用したので、DNSルックアップを繰り返さず、すべてがはるかに高速になりました。しかし、私は水銀でレポを引っ張ったり押したりするときに、非常に小さな変更を転送するのは辛いことに気付きました。より深く見ると、私はいつも_socket.getaddrinfoによって取られたこと、すなわちDNSルックアップが見つかりました。なぜなら、すべてのWebブラウザが古いDNS検索を使用するために/etc/pdnsd.confの情報を使用しても、Pythonsソケットはそうではありません。キャッシュされた参照を使用するにはどのようにして水銀を取得できますか?Pythonのsocket.getaddrinfo/mercurialで永続的なDNSキャッシングを利用していません

更新

getaddrinfo試みは、IPv4とIPv6の両方のアドレスを取得し、それがIPv6アドレスを見つけるために失敗した後に唯一の答えを返すためにので、それもあるかもしれません。私はこれをチェックする方法、すなわち、遅延がipv6、非永続性、またはその両方によるものかどうかについてはわかりません。

更新

これは、IPv6の要求に関連するかもしれないが、答えhereで提案されているように、私は私がチャンスを得ればそれをチェックする必要があります。

答えて

1

Pythonリストのpostのおかげで、BINDを使うと、pythonのgetaddrinfoがキャッシュされたDNS検索を使用するようです。 BINDをインストールして起動すると、繰り返しDNS検索が実行されます。

+0

参照されている電子メールがhttps://mail.python.org/pipermail/python-list/2011-July/607822.htmlに移動したと思います – jamesc

1

Pythons socket.getaddrinfo()は、OSのgetaddrinfo()(over libc)を使用します。 - これはPython とはまったく関係ありません。です。 pdnsがすでに解決チェーンに含まれるように設定されている場合、異なる解決速度は異なる要求によって根付きます。 - 正確に getaddrinfo()リクエストが高速で、遅いです。