Python: у urllib пропустить сбой соединения - PullRequest
1 голос
/ 02 декабря 2010

Используя Nokia N900, у меня есть оператор urllib.urlopen, который я хочу пропустить, если сервер отключен.(Если не удается подключиться> перейти к следующей строке кода).

Как / как это можно сделать в Python?

Ответы [ 3 ]

3 голосов
/ 02 декабря 2010

Согласно документации urllib , значение IOError возрастет, если соединение не может быть установлено.

try:
    urllib.urlopen(url)
except IOError:
    # exception handling goes here if you want it
    pass
else:
    DoSomethingUseful()

Редактировать: Как указал unutbu, urllib2 более гибок. В документации по Python есть хорошее руководство по его использованию.

3 голосов
/ 02 декабря 2010

Если вы используете Python3, urllib.request.urlopen имеет параметр timeout .Вы можете использовать это так:

import urllib.request as request
try:
    response = request.urlopen('http://google.com',timeout = 0.001)
    print(response)
except request.URLError as err:
    print('got here')
    # urllib.URLError: <urlopen error timed out>

timeout измеряется в секундах.Приведенное выше сверхкороткое значение просто для демонстрации того, что оно работает.Конечно, в реальной жизни вы, вероятно, захотите установить большее значение.

urlopen также повышает urllib.error.URLError (который также доступен как request.URLError)если URL не существует или ваша сеть не работает.

Для Python2.6 + эквивалентный код может быть найден здесь .

2 голосов
/ 02 декабря 2010
try:
    urllib.urlopen("http://fgsfds.fgsfds")
except IOError:
    pass
...