HTTPConnection .getresponse() 在我的 GAE 应用程序中引发无法捕获的错误
HTTPConnection .getresponse() throws an uncatchable error in my GAE app
我在 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
这给了我回应:
Error: Server Error
The server encountered an error and could not complete your request.
Please try again in 30 seconds.
如果我注释掉 print r1.status + "\r\n"
行,该方法执行得很好。 except:
不应该为我捕获这个异常吗?
更重要的是,为什么它一开始就抛出异常?
即不是异常(如通信传输代码异常),只是服务器响应,从通信传输的角度来看完全有效。
您需要在通信传输级别之上的通信协议级别以不同方式解决这个问题。
更新:上面的注释代表你说的回复,误导了我。
我不确定你是如何得到它的,但异常的原因是你的打印行:
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
我在 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
这给了我回应:
Error: Server Error
The server encountered an error and could not complete your request.
Please try again in 30 seconds.
如果我注释掉 print r1.status + "\r\n"
行,该方法执行得很好。 except:
不应该为我捕获这个异常吗?
更重要的是,为什么它一开始就抛出异常?
即不是异常(如通信传输代码异常),只是服务器响应,从通信传输的角度来看完全有效。
您需要在通信传输级别之上的通信协议级别以不同方式解决这个问题。
更新:上面的注释代表你说的回复,误导了我。
我不确定你是如何得到它的,但异常的原因是你的打印行:
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