更改resolv.conf时,dnspython未更新

时间:2016-06-13 14:32:02

标签: python dns dnspython

此代码段完美无缺

import dns
import dns.resolver

default = dns.resolver.get_default_resolver()
nameserver = default.nameservers[0]

除了如果我手动更改/etc/resolv.conf并再次调用get_default_resolver函数,它不会给我带来更新的地址。我需要重新启动python控制台才能看到更改效果。

我错过了什么?我应该使用相同的库对resolv.conf进行更改吗?

提前致谢,

1 个答案:

答案 0 :(得分:2)

如果您使用的是基于非Debian的Linux并使用glibc,那么您必须知道glibc会缓存resolv.conf并且除非明确告知,否则不会再查看它。从本质上讲,如果resolv.conf已经更改并且需要通过调用__res_init重新加载,则由您的应用程序告诉glibc。有关详细信息,请参阅Python not getting IP if cable connected after script has startedhttps://sourceware.org/bugzilla/show_bug.cgi?id=984