Tornado自定义路由
默认路由规则
代码
由下述代码可知,路由规则都在放在 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自定义路由相关推荐
- Tornado自定义分布式session框架
Tornado自定义分布式session框架 一.session框架处理请求执行的流程: 1.服务器端生成随机的cookie字符串 2.浏览器发送请求,服务器将cookie返回给浏览器. 3.服务器在 ...
- c# mvc html.beginform,asp.net-mvc – 使用Html.BeginForm()与自定义路由
这是你一定知道的默认路由: routes.MapRoute( "Default",// Route name "{controller}/{action}/{id}&qu ...
- gin自定义路由日志的格式
gin自定义路由日志的格式 默认的路由日志是这样的: [GIN-debug] POST /foo --> main.main.func1 (3 handlers) [GIN-debug] GET ...
- ASP.NET MVC 自定义路由中几个需要注意的小细节
本文主要记录在ASP.NET MVC自定义路由时,一个需要注意的参数设置小细节. 举例来说,就是在访问 http://localhost/Home/About/arg1/arg2/arg3 这样的自定 ...
- [ASP.NET MVC2 系列] ASP.NET MVC 之如何创建自定义路由约束
[ASP.NET MVC2 系列] [ASP.NET MVC2 系列] ASP.Net MVC教程之<在15分钟内用ASP.Net MVC创建一个电影数据库应用程序> ...
- SAP Spartacus的自定义路由
我新建了一个自定义Component: import { Component, OnInit } from '@angular/core'; import { ProductNameNormalize ...
- 自定义路由匹配和生成
前言 前两篇文章主要总结了CMS系统两个技术点在ASP.NET Core中的应用: <ASP.NET Core 中的SEO优化(1):中间件实现服务端静态化缓存> <ASP.NET ...
- SpringCloud Gateway配置自定义路由404坑
一.场景复现 微服务自定义路由,返回404页面. ①如图: (1)springcloud-gateway的路由设置 @Configuration public class RouteConfig {@ ...
- Tornado 自定义session,与一致性哈希 ,基于redis 构建分布式 session框架
Tornado 自定义session,与一致性哈希 ,基于redis 构建分布式 session import tornado.ioloopimport tornado.webfrom myhash ...
最新文章
- MySQL面试题 | 附答案解析(二十)
- ios 如何改变UISegmentedControl文本的字体大小?
- mysql创建utf-8字符集数据库
- Java -- JDBC 学习--数据库连接池
- C#对图片文件的压缩、裁剪操作初探
- Java 技术之动态代理机制
- U-net结构及代码注释
- 牛客题霸 NC19 子数组的最大累加和问题
- linux 错误处理命令,Linux运行脚本命令提示No such file or directory错误的解决办法
- [状态压缩DP] COJ 1129 送货到家
- 典型海洋环境观测数据产品应用现状及对我国的启示
- CentOS系统Kernel panic - not syncing: Attempted to k
- 支付宝相关信息会被泄露出去吗?
- 字符串数组排序的快速排序实现
- Google浏览器无法上网问题解决
- DC-DC升压IC测试及EN脚讲解
- 干货 | Elasticsearch Nested 数组大小求解,一网打尽!
- PTC System Monitor
- (前端)html与css css 18、清除浮动,溢出隐藏
- 8. 设计模式 外观模式 一键电影模式