如何使用 webapp2 测量页面生成时间?

How to measure page generation time with webapp2?

我想显示生成页面所需的时间。我想结束时间的最佳位置是在基本处理程序的渲染函数中:

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))

但是,我不确定将开始计时器放在哪里。我不想将它插入每个单独的处理程序中...

一个地方可能是处理程序的调度函数,例如保存 webapp2 会话(如果您使用它们)的地方,如下所示:

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)

但它会测量所有处理程序的持续时间,而不仅仅是那些呈现和显示响应页面的处理程序。