Ошибка Python/Django "BadStatusLine"
Я получаю странную ошибку, которую я не могу найти для решения.
Эта ошибка не возникает каждый раз, когда я нажимаю этот сегмент кода, и это также не происходит для той же итерации через цикл (это происходит в цикле). Если я запустил его достаточно, он, похоже, не встретит ошибки, и программа будет успешно выполнена. Несмотря на это, мне все равно хотелось бы выяснить, почему это происходит.
Вот моя ошибка, версии, трассировка и т.д.: http://dpaste.com/681658/
Кажется, что в моем коде следующая строка:
page = urllib2.urlopen(url)
Где URL-адрес... URL явно.
И в моем коде есть import urllib2
.
Ответы
Ответ 1
Исключение BadStatusLine
возникает, когда вы вызываете urllib2.urlopen(url)
, а удаленный сервер отвечает кодом состояния, который python не может понять.
Предполагая, что вы не контролируете url
, вы не можете предотвратить это. Все, что вы можете сделать - это поймать исключение и грамотно управлять им.
from httplib import BadStatusLine
try:
page = urllib2.urlopen(url)
# do something with page
except BadStatusLine:
print "could not fetch %s" % url
Ответ 2
Это не имеет ничего общего с Django, это исключение, вызванное urllib2, которое не могло разобрать ответ после извлечения вашего URL-адреса. Это может быть проблема с сетью, некорректный ответ... Некоторые серверы/приложения случайно выбрали эту ошибку. Если вы не контролируете, что возвращает этот URL-адрес, вы остаетесь с улавливанием исключения, отладка URL-адресов вызывает проблемы и пытается идентифицировать шаблон.
Ответ 3
Пояснения от других пользователей правы и хороши, но на практике вы можете найти это полезным:
По моему опыту это обычно происходит, когда вы отправляете некотируемые значения в параметры URL-адреса, например значения, содержащие пробелы или другие символы, которые должны быть закодированы или закодированы.