I would like to display the time needed to generate a page. I guess the best place for the end time would be in the rendering function of the base handler:
class Handler(webapp2.RequestHandler):
def write(self, *a, **kw):
self.response.out.write(*a, **kw)
def render_str(self, template, **params):
t = jinja_env.get_template(template)
time_passed = datetime.now() - start_time
return t.render(params, time_passed=time_passed)
def render(self, template, **kw):
self.write(self.render_str(template, **kw))
However, I am not sure where to place the starting timer. I'd prefer not to insert it in every individual handler...
One place could be the handler's dispatch function, for example where the webapp2 sessions (if you use them) are saved, something like this:
def MyHandler(webapp2.RequestHandler)
...
def dispatch(self):
start_time = time.time()
try:
super(MyHandler, self).dispatch()
finally:
elapsed_time = time.time() - start_time
self.session_store.save_sessions(self.response)
But it will measure duration for all handlers, not just for those rendering and displaying a response page.