urllib2.urlopen - быстрее закрывается при неправильной ссылке - PullRequest
1 голос
/ 11 ноября 2011

Я хочу, чтобы моя программа попыталась открыть страницу и получить данные за интервал времени [0, t] , если это время истекло, соединение должно быть закрыто.
Я использую urllib2 , чтобы попытаться выполнить задачу.

t=1
url="http://example.com"
response=urllib2.urlopen(url,timeout=t)
html=response.read()

Это работает, если URL существует.Однако, если вы введете какой-то несуществующий URL-адрес, для остановки программы потребуется слишком много времени для ошибки.И если я добавлю эту программу на какой-нибудь веб-сайт, пользователю придется слишком долго ждать сообщения об ошибке.
Есть ли способ остановить выполнение команды urlopen , если это занимает больше времени, чем заданное время?

Ответы [ 2 ]

1 голос
/ 11 ноября 2011

Я не уверен, почему вы испытываете такие длительные задержки.

Когда я пытаюсь сделать запрос к несуществующему домену, я получаю urllib2.URLError: <urlopen error [Errno 11004] getaddrinfo failed> в течение примерно 0.2 секунд.

Каков точный код, который вы запускаете, и домен, который вы выбираете?

Попробуйте использовать requests и параметр времени ожидания.

1 голос
/ 11 ноября 2011

Если вы просто проверяете правильность ссылки, используйте запрос HEAD .

...