Windows проблема DNS с Python socket.getaddrinfo () - PullRequest
0 голосов
/ 23 апреля 2020

У меня проблемы с DNS с моими Python сценариями, но не с сетевыми инструментами или браузером на моем Windows 10 рабочем столе.

Выполнение моих сценариев каждый сетевой запрос занимает не менее 5-10 секунд. Профилирование с помощью py-spy с флагом --idle идентифицировало socket.getaddrinfo () как функцию, в которой больше всего времени проводилось. Я проверил в Python REPL с помощью следующей команды:

socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP)

Потребовалось около 5 -10 секунд, чтобы вернуться. Установка фиксированного DNS-сервера в моем активном сетевом интерфейсе ничего не изменила.

Перезагрузка устраняет проблему и снижает время отклика ниже второго раза. Но после нескольких дней работы компьютера проблема возвращается.

Похоже, что socket.getaddrinfo достигает некоторого времени ожидания, а затем разрешается с правильным DNS.

nslookup работает просто отлично. Время отклика в мс. Также inte rnet серфинг в браузерах работает просто отлично.

Любые идеи, где я мог бы начать копать?

1 Ответ

1 голос
/ 29 апреля 2020

Что вы пытаетесь совершить sh? Преобразование доменного имени в IP-адрес?

  1. просто попробуйте: socket.gethostbyname ("example.com")

  2. проверьте, какие DNS-серверы настроены (в cmd-ipconfig / all, категория «DNS-серверы»).

  3. Попробуйте использовать собственный клиент python DNS, проверьте, сохраняется ли проблема. например, днс python

(См. этот ответ - Разрешить сокет DNS с указанием c DNS-сервер )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...