Подтвердить что ты не робот

Python urllib2 Код состояния HTTP URLError.

Я хочу захватить код состояния HTTP, когда он вызывает исключение URLError:

Я пробовал это, но не помог:

except URLError, e:
    logger.warning( 'It seems like the server is down. Code:' + str(e.code) )
4b9b3361

Ответ 1

Вы не должны проверять код состояния после ловли URLError, так как это исключение может быть поднято в ситуациях, когда нет кода состояния HTTP, например, когда вы получаете отказ от отказа в подключении.

Используйте HTTPError для проверки ошибок HTTP, а затем используйте URLError для проверки других проблем:

try:
    urllib2.urlopen(url)
except urllib2.HTTPError, e:
    print e.code
except urllib2.URLError, e:
    print e.args

Конечно, вы, вероятно, захотите сделать что-то более умное, чем просто печатать коды ошибок, но вы получите эту идею.

Ответ 2

Не уверен, почему вы получаете эту ошибку. Если вы используете urllib2, это должно помочь:

import urllib2
from urllib2 import URLError

try:
    urllib2.urlopen(url)
except URLError, e:
    print e.code