I have a handler which only handles POST requests, for which it logs at various stages of the request, and writes to db.
I noticed in the log today that a recent POST request to this handler returns a 200 response, didn't throw any exception but also didn't log anything. A quick check in the database for this request reveals that nothing is written there. How is this possible?
class MyHandler(tornado.web.RequestHandler):
def post(self, arg1, arg2):
var1 = self.get_argument('param1', None)
var2 = self.get_argument('param2', None)
var3 = self.get_argument('param3', None)
ip = self.request.headers.get('X-Forwarded-For', self.request.remote_ip).split(',')[0]
logger.info('[MyHandler] - request received from: %s' % ip)
if blah blah blah:
try:
with self.application.sql:
# just update the session status based on mode
if var3 == 'a':
self.application.sql.execute('UPDATE MyTable SET fieldA=?, fieldB=? WHERE fieldC=? AND \
fieldD=?', (1, int(var1), game, int(var2)))
elif var3 == 'b':
pass
self.finish()
except ValueError as e:
logger.exception('[MyHandler] - casting error occurred when updating %s: %s' % (var1, e.args[0]))
raise tornado.web.HTTPError(500)
except sqlite.Error as e:
logger.exception('[MyHandler] - SQLite error occurred when updating %s: %s' % (var1, e.args[0]))
raise tornado.web.HTTPError(500)
else:
logger.warning('[MyHandler] - invalid request received: (%s, %s, %s)' % (var1, var2, var3))
raise tornado.web.HTTPError(404)