I've got the following piece of code in a GAE app - there's very little to the app but this
sites = [
[1, 0, 'the google', 'www.google.com', '555-0123']
for site in sites:
print "checking " + site + "\r\n"
conn = httplib.HTTPConnection(site)
r1 = conn.getresponse()
print r1.status + "\r\n"
except: # catch *all* exceptions
e = sys.exc_info()
This gives me the response:
Error: Server Error
The server encountered an error and could not complete your request.
Please try again in 30 seconds.
If I comment out the line
print r1.status + "\r\n" the method executes just fine. Shouldn't
except: catch this exception for me?
More importantly, why is it throwing an exception in the first place?
That is not an exception (as in communication transmission code exception), it's just a server response, perfectly valid from the communication transmission prospective.
You need to address that differently, at the communication protocol level, above the communication transmission level.
Update: The above note stands for the response you mentioned, which misled me.
How exactly you're getting it I'm not sure, but the reason for the exception is your print line:
File "blah.py", line 187, in post print r1.status + "\r\n" TypeError: unsupported operand type(s) for +: 'long' and 'str'
You could replace the line with something like this to avoid the exception:
print "%s\r\n" % r1.status