Tornado 路由有什么好方法,一个一个写太麻烦了,有没有根据 url 和注解匹配的方法呢 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Tornado Documentation
htp://www.v2ex.com/tornado/
Tornado on GitHub
https://github.com/facebook/tornado/
Tornado Gists
http://tornadogists.org/
everlasting_188
V2EX    Tornado

Tornado 路由有什么好方法,一个一个写太麻烦了,有没有根据 url 和注解匹配的方法呢

  •  
  •   everlasting_188 2018-07-03 17:51:59 +08:00 17179 次点击
    这是一个创建于 2655 天前的主题,其中的信息可能已经有所发展或是发生改变。
    27 条回复    2019-11-17 19:50:48 +08:00
    shuax
        1
    shuax  
       2018-07-03 17:54:12 +08:00
    那你自动生成一点代码喽
    felinx
        2
    felinx  
       2018-07-03 17:59:18 +08:00
    我倒是最喜欢这种方式
    everlasting_188
        3
    everlasting_188  
    OP
       2018-07-03 18:06:32 +08:00
    @felinx 如果 handler 太多的话,不感觉很不好维护吗
    RicardoScofileld
        4
    RicardoScofileld  
       2018-07-03 18:07:46 +08:00
    tornado 有没有类似于 flask 的 blueprint 或是 Django 的 app 呢?
    tabris17
        5
    tabris17  
       2018-07-03 18:10:08 +08:00
    这时候才想到 flask 的好啊,不过通过装饰器来生成路由自己也可以实现到 tornado 上的
    zhuangzhuang1988
        6
    zhuangzhuang1988  
       2018-07-03 18:25:46 +08:00
    everlasting_188
        7
    everlasting_188  
    OP
       2018-07-03 18:26:26 +08:00
    @tabris17 每个都装饰一下,也有点麻烦。flask 性能怎么样呢?
    everlasting_188
        8
    everlasting_188  
    OP
       2018-07-03 18:27:10 +08:00
    @zhuangzhuang1988 我研究下,谢谢
    HFcbyqP0iVO5KM05
        9
    HFcbyqP0iVO5KM05  
       2018-07-03 19:20:10 +08:00 via Android
    我觉得 Flask 那种装饰器路由挺好的呀。
    https://imhuwq.com/2016/12/24/Tornado-实现-decorator-路由 /
    jswh
        10
    jswh  
       2018-07-03 19:49:07 +08:00
    pabupa
        11
    pabupa  
       2018-07-03 22:25:54 +08:00
    为每一个 handler 类上加一个类属性,用来定义路由规则。然后自动导入(__import__)。在自动导入的时候,还可以分文件夹给路由加前缀。
    fy
        12
    fy  
       2018-07-03 22:43:21 +08:00
    https://github.com/fy0/fpage 全套工具,不谢
    AlexaZhou
        13
    AlexaZhou  
       2018-07-03 22:47:41 +08:00
    我觉得像 tornado 这样在一个地方定义路由非常好,如果到处定义,工程大了之后,连多少个接口都让人困惑
    sujin190
        14
    sujin190  
       2018-07-03 23:33:37 +08:00 via Android
    @AlexaZhou 深表赞同,现在完全搞不清维护的 flask 注册了多少路由,有没有冲突,而且路由匹配多用正则,太多不慢么
    lozzow
        15
    lozzow  
       2018-07-03 23:56:42 +08:00 via iPhone   1
    我 flask 都是集中定义路由,以至于现在 tornado 也想直接在一个文件定义所有路由,从来不用路由装饰器,太难找了有时候会
    neoblackcap
        16
    neoblackcap  
       2018-07-04 00:21:41 +08:00
    everlasting_188
        17
    everlasting_188  
    OP
       2018-07-04 09:57:49 +08:00
    @pabupa 这个方法比较好,根据模块的名称和 url 进行动态匹配,但是我 python 动态加载这一块不是非常熟悉,后续研究改进下,其实只要是目录组织结构和 url 比较规范的话,不会存在找不到的问题,java 里都这么约定的用,挺方便的。整体来说,python 在 web 这一块还是稍微弱了一点。
    tonghuashuai
        18
    tonghuashuai  
       2018-07-04 10:05:46 +08:00
    自己写个装饰器路由就好了啊,再深入点就是根据 class 自动生成路由
    everlasting_188
        19
    everlasting_188  
    OP
       2018-07-04 10:13:36 +08:00
    @tonghuashuai 是这样的,启动时候需要 python 遍历整个包下面的模块,根据 class 反射加进去路径.
    felinx
        20
    felinx  
       2018-07-04 10:50:42 +08:00
    @everlasting_188 我的做法是每一个 handler 下的写在一个文件里,比如所有以 /users/ 开头的路由 都在 UsersHandler 里,全局的再汇合到一起,通过这个 https://github.com/felinx/djinn/blob/master/djinn/utils.py#L80
    owenliang
        21
    owenliang  
       2018-07-04 11:16:39 +08:00 via Android
    妈的 什么都麻烦 吃饭麻不麻烦?
    everlasting_188
        22
    everlasting_188  
    OP
       2018-07-04 11:48:43 +08:00
    @owenliang 就你这弱智水平,适合吃屎
    everlasting_188
        23
    everlasting_188  
    OP
       2018-07-04 11:53:19 +08:00
    用 java 开发的多,python 一直在做一些 AI 的服务(开源库确实多),python 的 web 框架的成熟度确实要差一些,所以问一下。骂人的就滚一边去,不嫌麻烦,你牛逼,你不直接写汇编和二进制代码去。
    danbomingzhi
        24
    danbomingzhi  
       2018-07-04 15:31:38 +08:00
    用一个类装饰器,将 handler 注册到类中,类中加一个类方法返回这个类的注册变量
    gjquoiai
        25
    gjquoiai  
       2018-07-04 19:51:45 +08:00
    借楼问一下,tornado 有没有什么好办法统一路由的前缀?类似于 flask 的 blueprint = Blueprint(url_prefix='/api') 这样的
    Linxing
        26
    Linxing  
       2018-07-05 12:51:20 +08:00
    正则匹配??
    SystemLight
        27
    SystemLight  
       2019-11-17 19:50:48 +08:00
    https://github.com/SystemLight/madtornado 改造了下 tornado 可以给 handler 加装饰器 @register.route(use=register.PRT) 自动生成
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2830 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 13:33 PVG 21:33 LAX 06:33 JFK 09:33
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86