dnspython не обновляется при изменении resolv.conf

Этот фрагмент отлично работает

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 ответ

Если вы используете Linux не на Debian и используете glibc, вы должны знать, что glibc кэширует resolv.conf и не будет смотреть на него снова, если это явно не указано. По сути, ваше приложение должно сообщить glibc, если resolv.conf изменился и его необходимо перезагрузить, вызвав __res_init, Смотрите Python, не получающий IP, если кабель подключен после запуска скрипта, и https://sourceware.org/bugzilla/show_bug.cgi?id=984 для получения подробной информации.

Другие вопросы по тегам