默认路由规则

代码

由下述代码可知,路由规则都在放在 tornado.web.Application 中,强迫症的我看着不舒服不说,而且如果有多级路由的话就很难搞了,比如说用户模块、不同视图模块等等,前一级路由是固定的,后面是变动的,比如说 /user/add 、/user/delete、/user/update,类似这种的,如果数量多了,某一天user要变成users了,一个个改费时费力,看着还不优雅

import tornado.web
import tornado.ioloop
import tornado.httpserver
from APISets.weatherAPI import *import logging
logger = logging.getLogger(__name__)
logger.setLevel(level=logging.INFO)
handler = logging.FileHandler("./logs/log.txt")
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)class MainHandler(tornado.web.RequestHandler):"""主路由处理类"""@tornado.web.asynchronousdef get(self, *args, **kwargs):"""对应HTTP的请求方式"""try:print('----------开始进入程序-------------')logger.info("[Request]:" + self.request.query)data = search_api(self)# self.write(data)self.finish(data)except Exception as e:logger.error("[Response]:" + str(e))class IndexHandler(tornado.web.RequestHandler):def get(self):self.write("node health check success!")application = tornado.web.Application([(r'/checkinfo/', MainHandler),(r'/index/', IndexHandler)
])if __name__ == '__main__':server = tornado.httpserver.HTTPServer(application)server.listen(8000)tornado.ioloop.IOLoop.current().start()

方案

根据之前写gin框架项目得到的灵感,将路由单独拎出来,通过组装列表来得到各个分组的路由

层级

server.py

import tornado.web
import tornado.ioloop
import tornado.httpserver
from route import routerapplication = tornado.web.Application(router.InitRoute()
)if __name__ == '__main__':server = tornado.httpserver.HTTPServer(application)server.listen(8000)tornado.ioloop.IOLoop.current().start()

router.py

from handler.user.user_handler import IndexHandlerrouter = list()user_r = "/user/"  # 用户模块def user_router():"""用户模块路由:return:"""print("加载用户模块路由")r = [(r'', IndexHandler),]user_router = [(user_r + _[0], _[1]) for _ in r]print('user_router = ', user_router)return user_routerdef InitRoute():"""初始化路由:return:"""print('初始化路由')router.extend(user_router())return router

user_handler.py

import tornado.webclass IndexHandler(tornado.web.RequestHandler):def get(self):self.finish({'code': 200, 'msg': "成功"})

Tornado自定义路由相关推荐

  1. Tornado自定义分布式session框架

    Tornado自定义分布式session框架 一.session框架处理请求执行的流程: 1.服务器端生成随机的cookie字符串 2.浏览器发送请求,服务器将cookie返回给浏览器. 3.服务器在 ...

  2. c# mvc html.beginform,asp.net-mvc – 使用Html.BeginForm()与自定义路由

    这是你一定知道的默认路由: routes.MapRoute( "Default",// Route name "{controller}/{action}/{id}&qu ...

  3. gin自定义路由日志的格式

    gin自定义路由日志的格式 默认的路由日志是这样的: [GIN-debug] POST /foo --> main.main.func1 (3 handlers) [GIN-debug] GET ...

  4. ASP.NET MVC 自定义路由中几个需要注意的小细节

    本文主要记录在ASP.NET MVC自定义路由时,一个需要注意的参数设置小细节. 举例来说,就是在访问 http://localhost/Home/About/arg1/arg2/arg3 这样的自定 ...

  5. [ASP.NET MVC2 系列] ASP.NET MVC 之如何创建自定义路由约束

     [ASP.NET MVC2 系列]      [ASP.NET MVC2 系列] ASP.Net MVC教程之<在15分钟内用ASP.Net MVC创建一个电影数据库应用程序>      ...

  6. SAP Spartacus的自定义路由

    我新建了一个自定义Component: import { Component, OnInit } from '@angular/core'; import { ProductNameNormalize ...

  7. 自定义路由匹配和生成

    前言 前两篇文章主要总结了CMS系统两个技术点在ASP.NET Core中的应用: <ASP.NET Core 中的SEO优化(1):中间件实现服务端静态化缓存> <ASP.NET ...

  8. SpringCloud Gateway配置自定义路由404坑

    一.场景复现 微服务自定义路由,返回404页面. ①如图: (1)springcloud-gateway的路由设置 @Configuration public class RouteConfig {@ ...

  9. Tornado 自定义session,与一致性哈希 ,基于redis 构建分布式 session框架

    Tornado 自定义session,与一致性哈希 ,基于redis 构建分布式 session import tornado.ioloopimport tornado.webfrom myhash ...

最新文章

  1. MySQL面试题 | 附答案解析(二十)
  2. ios 如何改变UISegmentedControl文本的字体大小?
  3. mysql创建utf-8字符集数据库
  4. Java -- JDBC 学习--数据库连接池
  5. C#对图片文件的压缩、裁剪操作初探
  6. Java 技术之动态代理机制
  7. U-net结构及代码注释
  8. 牛客题霸 NC19 子数组的最大累加和问题
  9. linux 错误处理命令,Linux运行脚本命令提示No such file or directory错误的解决办法
  10. [状态压缩DP] COJ 1129 送货到家
  11. 典型海洋环境观测数据产品应用现状及对我国的启示
  12. CentOS系统Kernel panic - not syncing: Attempted to k
  13. 支付宝相关信息会被泄露出去吗?
  14. 字符串数组排序的快速排序实现
  15. Google浏览器无法上网问题解决
  16. DC-DC升压IC测试及EN脚讲解
  17. 干货 | Elasticsearch Nested 数组大小求解,一网打尽!
  18. PTC System Monitor
  19. (前端)html与css css 18、清除浮动,溢出隐藏
  20. 8. 设计模式 外观模式 一键电影模式

热门文章

  1. 雄联盟工程师独家分享:如何使开发更有效率
  2. Jquery循环显示图片
  3. 腾讯编程马拉松初赛的整理
  4. Linux服务器分区的方案
  5. 链接跳转(本页面跳转)
  6. php 中 Traits 详解
  7. Netflix是什么,与Spring Cloud有什么关系
  8. java 清空scanner_Java Scanner reset()用法及代码示例
  9. 指令集与应敏科技达成战略合作,国产原创物联网操作系统助力电力检测「智慧化」...
  10. ARM64汇编,跳转命令B\CBZ,字节码