Python urllib2 URLError Код состояния HTTP. - PullRequest
30 голосов
/ 12 августа 2010

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

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

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

Ответы [ 2 ]

62 голосов
/ 12 августа 2010

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

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

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

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

2 голосов
/ 12 августа 2010

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

import urllib2
from urllib2 import URLError

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