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的请求,除 ...
随机推荐
- 【算法】LRU算法
缓存一般存放的都是热点数据,而热点数据又是利用LRU(最近最久未用算法)对不断访问的数据筛选淘汰出来的. 出于对这个算法的好奇就查了下资料. LRU算法四种实现方式介绍 缓存淘汰算法 利用Linked ...
- 即时编译(JIT)
即时编译(JIT : just-in-time compilation): 指计算机领域里,即时编译也被成为动态翻译,是一种通过在运行时将字节码翻译为机器码,从而改善字节码编译语言性能的技术 即时编译 ...
- [AHOI2005]病毒检测
Description 科学家们在Samuel星球上的探险仍在继续.非常幸运的,在Samuel星球的南极附近,探险机器人发现了一个巨大的冰湖!机器人在这个冰湖中搜集到了许多RNA片段运回了实验基地.科 ...
- One hundred layer HDU - 4374
One hundred layer HDU - 4374 $sum[i][j][k]$表示第i层第j到k列的和 $ans[i][j]$表示第i层最终停留在第j列的最大值,那么显然$ans[i][j]= ...
- 解题报告:hdu 3572 Task Schedule(当前弧优化Dinic算法)
Problem Description Our geometry princess XMM has stoped her study in computational geometry to conc ...
- HttpURLConnection 发送PUT请求 json请求体 与服务端接收
发送请求: public void testHttp() { String result = ""; try { URL postURL = new URL("http: ...
- 《Redis开发与运维》快速笔记(一)
1.前言&基本介绍 在原始的系统架构中,我们都由程序直接连接DB,随着业务的进一步开展,DB的压力越来越大,为了缓解DB的这一压力,我们引入了缓存,在程序连接DB中加入缓存层, 从而减轻数据库 ...
- c++正则表达式模板库GRETA的使用
GRETA是微软研究院的一位前员工开发并开源的一个C++正则表达式库,兼容perl正则语法 官方介绍:“A fast, flexible, perl-compliant regular express ...
- get log
C:\Users\wb_changxiang.chen\Desktop\get_log_adb.py #! /usr/bin/env pythonimport osimport sysimport t ...
- win7创建无线(WIFI)cmd命令
1.创建无限热点:netsh wlan set hostednetwork mode=allow ssid=name key=12345678. 2.承载网络:netsh wlan start(关闭s ...