Wie flush cache, für socket.gethostbyname Antwort?
Jemand dieses vor:
Nach der Aktualisierung der DNS-records..mache ich einen Graben für 'test.somedomain.com' ich 167.69.143.234, aber wenn ich eine Steckdose.gethostbyname('test.somedomain.com') ich bekomme 167.69.6.234.
Ich vermute-Buchse ist noch mit cache...wie lösche ich es ? oder Spülen Sie es?
Mein code ist sehr einfach:
Linux Ankommen, Können
dig test.somedomain.com
Python:
import socket
socket.gethostbyname('test.somedomain.com')
Sollte es sein, die Rückgabe der 167.69.143.234 Adresse ist die aktualisierte ein, die in DNS.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Python ' s
socket.gethostbyname
verwendet das Betriebssystem resolver und hat keine API für das clearing-cache. Der cache (das kann ein caching-DNS-server verwendet, die durch das Betriebssystem oder ein Betriebssystem oder standard-Bibliothek-Komponente) ist ein wesentliches element des DNS-Systems und den "richtigen Weg" zu bewältigen, ist es, zu warten, bis die Platte TTL-Wert abgelaufen ist (Betriebssystem sollte entfernen Sie die veralteten Wert aus der cache dann). Bei der Aktualisierung der DNS-sollten Sie vielleicht haben TTL-Wert des alten Wertes eingestellt früher.Könnte man auch ein Python-DNS-Implementierung, wie DNSPython anstatt
socket.gethostbyname
– Sie sollten die volle Kontrolle über die resolver-cache (aber nicht die caches der NS-resolver verwendet) dann. Obwohl, es wird wahrscheinlich nicht dein problem lösen (mit einem bestehenden code, denke ich).Keinen DNS-Server Cache auf Linux-Standard und benötigt einen daemon wie
sssd
odernscd
. Sie können starten Sie einfach den Dämon zu zwingen, ziehen Sie die neue Adresse.Hinweis für Windows-Benutzer: es gibt eine Standard-cache, die mit gelöscht werden können
ipconfig /flushdns
.Alternativ können Sie eine hart codierte Eintrag in
/etc/hosts
, überprüfen Sie es zuerst. Tools wiedig
odernslookup
wird die Abfrage der DNS-server direkt und umgehen die NSS Bibliothek-subsystem.