settimeout () Исключения Игнорирование Try / Except - Python - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь пропустить сокеты с тайм-аутом, используя блок «попробуй / исключить» в Python. Отрывок блока / кода ниже

s.settimeout(1)
s.sendto(NTP_QUERY, (host, port))
try:
    msg, address = s.recvfrom(1024)
    s.settimeout(None)
except:
    pass

Я думаю, что если settimeout () станет истиной, он будет проходить с исключением. Есть что-то, что я пропускаю, спасибо за всю помощь. Мой вывод "UnboundLocalError: локальная переменная 'msg', на которую ссылаются перед присваиванием"

1 Ответ

0 голосов
/ 29 августа 2018

Из документов Python

Установить тайм-аут на блокировку операций сокета. Аргументом value может быть неотрицательное число с плавающей запятой, выражающее секунды, или None. Если задано ненулевое значение, последующие операции сокета вызовут исключение тайм-аута, если значение периода тайм-аута истекло до завершения операции. Если задан ноль, сокет переводится в неблокирующий режим. Если значение не указано, сокет переводится в режим блокировки.

Что это значит (для вашего кода):

  1. И sendto, и recvfrom вызовут исключение, если они остановятся
  2. Вы будете обрабатывать только один из recvfrom
...