У меня возникла проблема с сценарием Python, который должен должен проверить, подключен ли пользователь к сети Wi-Fi с невольным порталом. В частности, сценарий длительный, пытаясь подключиться к example.org каждые 60 секунд.socket.getaddrinfo не работает, если сеть запущена в автономном режиме
Проблема заключается в том, что если сеть начинает автономный режим (то есть Wi-Fi не подключен в начале скрипта), socket.getaddrinfo
будет всегда завершаться с ошибкой «Имя или служба не известны», даже когда-то Wi-Fi подключен до перезапуска скрипта Python. (Это не DNS вещь - все запросы терпят неудачу.)
Так как urllib
и requests
использование sockets
, это совершенно невозможно, чтобы загрузить пример страницы, как только Python попадает в это состояние.
Есть ли способ обхода этого способа или способ сброса sockets
, чтобы он работал правильно после сбоя сети?
Чтобы было ясно, вот репродукция:
- Отключение WiFi
- Run интерактивная сессия Python
import urllib
иurllib.open("http://stackoverflow.com/")
- терпит неудачу, как и ожидалось- Переустановка WiFi
urllib.open("http://example.com/")
Ожидаемое: Возвращается HTML от example.com
Actual: socket.gaierror: [Errno -2] Name or service not known
Да, он все еще не работает при подключении к сети. Проблема заключается в том, что состояние сети не имеет значения, если все, если сеть не подключена при вызове _first_. После этого первого вызова я могу подключиться к сети и повторно запустить 'socket.getaddrinfo' столько раз, сколько захочу. Это не сработает. –