Python/Django "BadStatusLine"错误
我遇到了一个奇怪的错误,找不到解决办法。
这个错误并不是每次运行到这段代码时都会出现,而且在循环中同一次运行也不一定会出错。如果我多次运行程序,似乎就不会遇到这个错误,程序也能顺利执行。不过,我还是想弄清楚为什么会发生这种情况。
这是我的错误信息、版本、跟踪等内容:http://dpaste.com/681658/
这个错误似乎出现在我代码中的以下一行:
page = urllib2.urlopen(url)
其中url显然是一个网址。
而且我的代码中确实有import urllib2
这一行。
3 个回答
8
这和Django没有关系,这是urllib2抛出的一个异常,意思是它在获取你的网址后无法解析返回的内容。可能是网络问题,也可能是返回的数据格式不对……有些服务器或应用会随机出现这种错误。如果你不能控制这个网址返回什么内容,那你只能捕捉这个异常,调试一下哪些网址出现了问题,然后试着找出规律。
9
其他用户的解释是对的,也很不错,但在实际操作中你可能会发现这个很有用:
根据我的经验,这种情况通常发生在你向网址参数发送没有加引号的值时,比如那些包含空格或其他需要加引号或进行网址编码的字符的值。
38
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