2012-12-12 46 views
1

給出以下(樣品)處理器(從here拍攝):有沒有辦法在內部打印龍捲風web服務器上配置的路由處理程序?

handlers = [ 
      (r"/", MainHandler), 
      (r"/auth/login", AuthLoginHandler), 
      (r"/auth/logout", AuthLogoutHandler), 
     ] 

有沒有辦法以編程方式打印一個單獨的頁面上的處理程序?我在想沿着線的東西:

handlers = [ 
      (r"/", MainHandler), 
      (r"/auth/login", AuthLoginHandler), 
      (r"/auth/logout", AuthLogoutHandler), 
      (r"/routes", RoutePrinter), 
     ] 

... 

class RoutePrinter(...): 
    def get(self): 
     self.write(str(self.application.routes)) 

這給了我 [(<_sre.SRE_Pattern object at 0x216c130>, [, , , , , , , , , , , , , , , , , , , , , , ])]

我已經嘗試了一些不同的存取,但並沒有真正的幫助。是否有可能生成我的路線列表?

編輯

基礎上進一步搜索,我所遇到的方法從這些regex對象打印模式/標誌。問題是我很難理解如何解除它們,因爲它不如self.application.handlers[0][0]然後self.application.handlers[1][0]那樣直觀。第二個是「超出範圍」,即使它看起來應該是「/ auth/login」。

我錯過了什麼?

回答

2

這是怎麼回事?

[handler.regex.pattern for handler in self.application.handlers[0][1]] 

如果你也希望處理程序類的名稱:

[(handler.regex.pattern, handler.handler_class) for handler in self.application.handlers[0][1]] 
+0

不出現在龍捲風4.5+工作,因爲路由configuraiton增強如初。 – Darkenor