HTTPConnection .getresponse()在我的GAE应用程序中抛出一个无法捕获的错误

时间:2015-12-11 16:59:26

标签: python google-app-engine httplib

我在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:抓住这个例外吗?

更重要的是,为什么它首先抛出异常?

1 个答案:

答案 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