Python / Django "BadStatusLine" ошибка - PullRequest
       3

Python / Django "BadStatusLine" ошибка

14 голосов
/ 05 января 2012

Я получаю странную ошибку, которую, похоже, не могу найти решение.

Эта ошибка не возникает каждый раз, когда я сталкиваюсь с этим сегментом кода, и не происходит при одной и той же итерации цикла (это происходит в цикле). Если я запустил его достаточно, он, похоже, не сталкивается с ошибкой, и программа выполняется успешно. Несмотря на это, я все еще хотел бы выяснить, почему это происходит.

Вот моя ошибка, версии, трассировка и т.д .: http://dpaste.com/681658/

Кажется, это происходит со следующей строкой в ​​моем коде:

page = urllib2.urlopen(url)

Где URL-адрес .... очевидно, URL.

И есть import urllib2 в моем коде.

Ответы [ 3 ]

34 голосов
/ 05 января 2012

Исключение BadStatusLine возникает при вызове urllib2.urlopen(url) и удаленный сервер отвечает кодом состояния, который Python не может понять.

Предполагая, что вы не контролируете1007 *, вы не можете предотвратить это.Все, что вы можете сделать, это поймать исключение и управлять им изящно.

from httplib import BadStatusLine

try:
    page = urllib2.urlopen(url)
    # do something with page
except BadStatusLine:
    print "could not fetch %s" % url
7 голосов
/ 30 октября 2012

Объяснения других пользователей верны и хороши, но на практике вы можете найти это полезным:
По моему опыту, это обычно происходит, когда вы отправляете значения без кавычек в параметры URL, например, значения, содержащие пробелы или другие символы, которые необходимо заключить в кавычки или URL.

7 голосов
/ 05 января 2012

Это не имеет ничего общего с Django, это исключение, выданное urllib2, которое не может проанализировать ответ после получения вашего URL. Это может быть проблема с сетью, неправильный ответ ... Некоторые серверы / приложения генерируют такие ошибки случайным образом. Если вы не контролируете, что возвращает этот URL, у вас остается ловить исключение, отлаживать, какие URL вызывают проблемы, и пытаться идентифицировать шаблон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...