Python / Django“BadStatusLine”错误

时间:2012-01-04 21:55:19

标签: python django

我遇到一个奇怪的错误,我似乎无法找到解决方案。

每次我点击这段代码时都不会发生这个错误,也不会在循环中进行相同的迭代(它发生在循环中)。如果我运行足够,它似乎没有遇到错误,程序执行成功。无论如何,我仍然想知道为什么会发生这种情况。

这是我的错误,版本,跟踪等:http://dpaste.com/681658/

似乎在我的代码中出现以下行:

page = urllib2.urlopen(url)

其中url显然是一个URL。

我的代码中确实有import urllib2

3 个答案:

答案 0 :(得分:34)

当您调用urllib2.urlopen(url)并且远程服务器使用python无法理解的状态代码进行响应时,会引发BadStatusLine异常。

假设您不控制url,则无法阻止这种情况发生。您所能做的就是捕获异常,并优雅地管理它。

from httplib import BadStatusLine

try:
    page = urllib2.urlopen(url)
    # do something with page
except BadStatusLine:
    print "could not fetch %s" % url

答案 1 :(得分:7)

这与Django没有任何关系,它是urllib2引发的异常,它在获取你的url后无法解析响应。它可能是一个网络问题,一个格式错误的响应...一些服务器/应用程序随机抛出这种错误。如果你不控制这个URL返回的内容,你就会留下捕获异常,调试哪些URL导致问题并尝试识别模式。

答案 2 :(得分:7)

其他用户的解释是正确和好的,但在实践中,您可能会觉得这很有用:
根据我的经验,这通常发生在您向url参数发送不带引号的值时,例如包含空格或其他需要引号或url编码的字符的值。