tornado框架基础01-路由简介
tornado 小而精 Django 大而全
Web框架 Tornado是一个由Python开发的Web框架
Web服务 利用Tornado,可以快速搭建和一个高性能的Web服务
非阻塞 Tornado是单线程异步的非阻塞服务器,因此速度非常快,相对一般情况下来说,如果同时连接数Django为3000个左右,那么Tornado为10000个
易于学习 Tornado的学习成本非常低,是个非常容易学习使用的Web框架
Tornado的安装
pip install tornado
import tornado.ioloop #基于epoll的循环.
import tornado.web #web框架的核心模块
import tornado.httpserver
from tornado.options import define,options
define('port',default = 8080,help = 'run port', type = int)
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write('hello this is my first WebWerver')
class IndexHandler():
application = tornado.web.Application(
[
(r'/',MainHandler), #数据以元组存放.
('/index',IndexHandler)
#用来存放路径的
]
) #基于核心模块下面的类的实例化,是服务器进行调用的接口.web框架的应用核心.
if __name__ = '__main__':
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(options.port) #绑定操作
tornado.ioloop.IOloop.current().start() #,询问epoll的一个循环.开启服务器.访问不同路径,返回不同的资源.
路由
get_arguments() ?key=value
简单的例子
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler): #继承底层封装内容.
def get(self):
self.write("hello,this is my first webserver")
application = tornado.web.Application([ #应用的核心
(r"/",MainHandler), #定义路径及Handler
])
if __name__ == "__main__":
application.listen(8080)
tornado.ioloop.IOLoop.current().start()
tornado.ioloop #开启循环,让服务一直等待请求的到来
tornado.web #web框架核心模块,服务基本功能都封装在此模块中
路由表
application = tornado.web.Application([
(r"/",MainHandler),
])
客户端访问服务器可以看成是:客户端读取服务器资源的一个过程,路由表就指定了具体访问什么资源
在 Tornado 中,路由表通过如上方式定义
路由表是访问服务器的入口,在工作中如果有新的需求,往往只需要在路由表中添加新的路由即可
Handler
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("hello ")
在这里指定请求的资源 ,
启动Tornado
导入
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
Handler
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write('hello')
路由
if __name__ == '__main__':
tornado.options.parse_command_line() #打印请求信息.
app = tornado.web.Application(
handlers=[
(r'/',IndexHandler),
]
)
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.current().start()
命令行交互 使用命令行来控制启动
Tornado 支持通过命令行参数来控制 Tornado 的启动形式
代码
define('port', default=8080, help='run port', type=int)
define('version', default='0.0.1', help='version 0.0.1', type=str)
#通过这个来设置动态指定端口.
在命令行中输入:python tor.py --port=8888
使用
python test.py --port=8000
python test.py --version=1.0
python test.py --help
输入和输出
输入:
class TestIndexHandler(tornado.web.RequestHandler):
def get(self):
name = self.get_argument('name', 'no') #指定key,value
self.write('hello '+name)
print(name)
name = self.get_arguments('name')
self.write(' ')
self.write(','.join(name))
print(name)
使用:http://127.0.0.1:8000/test?name=budong #key=value&key=value形式.
? 后面便是参数
可以通过: get_argument 和 get_arguments 来获取参数值
输出:
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write('abc')
从 Tornado 输出到浏览器我们可以使用 write
tornado框架基础01-路由简介的更多相关文章
- 框架基础之Hibernate简介
框架基础之Hibernate简介 1.什么是Hibernate? Hibernate是一个开发源代码的对象关系映射框架,它对JDBC进行非常轻量级的对象封装,使得程序员可以随心所欲地使用对象编程思维来 ...
- tornado框架基础10-websocket
websocket 01 长轮询 在网页,我们经常扫码登录,结合之前的学习的知识点,来思考下,前端是如何知道用户在手机上扫码登录了呢? 长轮询:客户端不断的向服务器发送请求 缺点: \1. 开销大 \ ...
- Flask基础-01.Flask简介
Flask简介 Web应用程序作用 Web(World Wide Web)诞生最初的目的,是为了利用互联网交流工作文档. 关于Web框架 1. 什么是Web框架? 1. 已经封装好了一段代码,协助程序 ...
- tornado框架基础11-tornado异步
01 同步和异步 生活中常常会遇到在超市排队买东西的情况,排在你前面的人没有结算完成,你就无法付账,在计算机中也有类似的情形,一个程序在执行之前,需要等待其他的程序执行完成,大家还能举出其他的例子吗? ...
- tornado框架基础09-cookie和session
01 cookie 在上节,我们简单了解了登录过程,但是很明显,每次都需要登录,但是在平常逛网站的只需要登录一次,那么网站是如何记录登录信息的呢? 有没有什么办法可以让浏览器记住登录信息,下次再次打开 ...
- tornado框架基础04-模板基础
01 模板 模板演示 配置路径 在 application 中配置模板文件和静态文件的路径: template_path='templates', static_path='static', 模板 & ...
- tornado框架基础03-请求与响应
01 请求与响应 请求 浏览器在发送请求的时候,会发送具体的请求信息,由请求行,请求消息头,请求正文 请求消息头 向服务器传递附加信息 Accept: 浏览器可以接受的MIME类型. Accept-C ...
- tornado框架基础02-输入和输出
01 输出 write bytes类型 class IndexHandler(tornado.web.RequestHandler): def get(self): self.write(b'Torn ...
- Django框架——基础之路由系统(urls.py)
1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...
随机推荐
- 黑客攻防技术宝典web实战篇:攻击用户·其他技巧习题
猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 已知一项应用程序功能将一个查询字符串参数的内容插入到某个 HTTP 重定向的 Locati ...
- gcc降版本方法 - [学习]
[转载]转载时请以超链接形式标明文章原始出处和作者信息及本声明http://www.blogbus.com/huangw10-logs/182474992.html 周末折腾了一下午加一夜,终于弄明白 ...
- iOS 将navigationItem.titleView设置为自定义UISearchBar (Ficow实例讲解)
这篇文章可以解决以下问题: 1.将searchBar设置为titleView后,无法调整位置的问题 : 2.searchBar的背景色无法设置为透明色的问题: 3.searchBar输入框内用户输入的 ...
- bzoj2301 [HAOI2011]Problem b【莫比乌斯反演 分块】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2301 很好的一道题.首先把每个询问转化为4个子询问,最后的结果就是这四个子询问的记过加加减减 ...
- Oracle JDK各版本下载地址记录
Oracle JDK各版本下载地址: https://www.oracle.com/technetwork/java/javase/archive-139210.html
- h5-18-文件上传
参考博客地址:https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/Using_FormData_Objects 参考博客地址:http: ...
- Unity3D中GameObject 详细介绍
通过Hierarchy面板下的Create菜单可以手动地创建一个GameObject,它可以是一个相机,一个灯光,或者一个简单的模型,当我们要在程序里面动态地创建一个相机的时候,可以new一个Game ...
- 如何修改phpmyadmin上传文件大小限制
修改php配置文件,php.ini upload_max_filesize = 100M post_max_size = 100M 一般修改这2个就行了,然后重启wampserver 如果还不行,就执 ...
- C#基础学习5
数组集合
- springboot项目启动问题
在调试项目的时候有遇到这样一个问题: 项目启动后访问不通,编译没有任何问题,启动也没有报错,日志在打,但是访问不通.而且之前一直可以正常访问,在没改任何代码的情况下不能访问了. 尝试很多次偶然发现,点 ...