Jim*_*Jim 7 python sockets dns caching gethostbyname
任何人都遇到此事:
更新DNS记录后..我对'test.somedomain.com'进行挖掘,得到167.69.143.234,但是当我执行socket.gethostbyname('test.somedomain.com')时,我得到167.69.6.234.
我猜socket仍在使用缓存......我该如何清除它?还是冲洗它?
我的代码非常简单:
Linux Termianl
dig test.somedomain.com
Run Code Online (Sandbox Code Playgroud)
蟒蛇:
import socket
socket.gethostbyname('test.somedomain.com')
Run Code Online (Sandbox Code Playgroud)
它应该返回167.69.143.234地址,因为它是DNS中更新的地址.
Python socket.gethostbyname使用操作系统解析器,没有用于清除缓存的API.高速缓存(其可以是由操作系统或操作系统或标准库组件使用的缓冲DNS服务器)是DNS系统的一个基本要素和"正确的方式",以应付它等待,直到记录的TTL值到期(操作系统应该从缓存中删除陈旧值).更新DNS时,您应该具有之前调整的旧值的TTL.
你也可以使用Python的DNS实现,像DNSPython而不是使用的socket.gethostbyname-你应该在解析程序缓存的完全控制(不过解析器使用NS的不是缓存)即可.虽然,它可能不会解决你的问题(我想现有的代码).
| 归档时间: |
|
| 查看次数: |
9372 次 |
| 最近记录: |