2015-07-28 36 views
1

我想顯示生成頁面所需的時間。我猜結束時間的最好的地方是在基本處理程序的渲染功能:如何使用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)) 

但是,我不知道在什麼地方開始計時。我寧願不將其插入到每一個人處理...

回答

2

一個地方可能是處理程序的調度功能,例如當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) 

但它會測量所有處理程序的持續時間,而不僅僅是那些呈現和顯示響應頁面的持續時間。

+0

謝謝!終點爲時已晚(渲染出現在「最後」之前),但開始時間起作用。 –