我在GAE应用程序中有以下代码 - 应用程序的内容很少但是这个
class Check(webapp.RequestHandler):
def get(self):
sites = [
[1, 0, 'the google', 'www.google.com', '555-0123']
]
for site in sites:
try:
print "checking " + site[3] + "\r\n"
conn = httplib.HTTPConnection(site[3])
conn.request("GET", "/")
r1 = conn.getresponse()
print r1.status + "\r\n"
except: # catch *all* exceptions
e = sys.exc_info()[0]
print e
这给了我答复:
错误:服务器错误
服务器遇到错误,无法完成您的请求。
请在30秒后再试一次。
如果我注释掉行print r1.status + "\r\n"
,那么该方法执行得很好。我不应该except:
抓住这个例外吗?
更重要的是,为什么它首先抛出异常?
答案 0 :(得分:1)
那是不异常(如通信传输代码异常),它只是一个服务器响应,从通信传输的角度来看是完全有效的。
您需要在通信协议级别,在通信传输级别之上以不同方式解决这个问题。
更新:上述说明代表您提到的回复,误导了我。
你究竟是如何得到它我不确定,但例外的原因是你的打印线:
File "blah.py", line 187, in post
print r1.status + "\r\n"
TypeError: unsupported operand type(s) for +: 'long' and 'str'
您可以使用类似的内容替换该行以避免异常:
print "%s\r\n" % r1.status