有没有办法在内部龙卷风Web服务器上打印配置的路由处理程序?

时间:2012-12-12 03:31:23

标签: python tornado

给出以下(样本)处理程序(取自here):

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>, [, , , , , , , , , , , , , , , , , , , , , , ])]

我尝试了几种不同的访问器,但并没有真正帮助。是否可以生成我的路线列表?

修改

基于进一步搜索,我遇到了从这些正则表达式对象打印模式/标志的方法。问题是我很难理解如何取消它们,因为它不像self.application.handlers[0][0]那样直观self.application.handlers[1][0]。第二个是“超出范围”,即使它看起来应该是“/ auth / login”。

我错过了什么?

1 个答案:

答案 0 :(得分:3)

这个怎么样?

[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]]