python 框架tornado_Python的Web框架Tornado

https://www.cnblogs.com/wupeiqi/p/4375445.html                  https://blog.csdn.net/belalds/article/details/80575755

tornado源码分析流程:

a. python app.py-----从执行开始-加载路由关系-加载配置文件-启动socket

b. 用户发请求-匹配路由-执行指定类的方法

c. 异步非阻塞

1.1 Tornado是为何物

Tornado全称Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架,由FriendFeed公司在自己的网站FriendFeed中使用,被Facebook收购以后框架在2009年9月以开源软件形式开放给大众。

特点:

作为Web框架,是一个轻量级的Web框架,类似于另一个Python web框架Web.py,其拥有异步非阻塞IO的处理方式。

作为Web服务器,Tornado有较为出色的抗负载能力,官方用nginx反向代理的方式部署Tornado和其它Python web应用框架进行对比,结果最大浏览量超过第二名近40%。

性能: Tornado有着优异的性能。它试图解决C10k问题,即处理大于或等于一万的并发.

Tornado框架和服务器一起组成一个WSGI的全栈替代品。单独在WSGI容器中使用tornado网络框架或者tornaod http服务器,有一定的局限性,为了最大化的利用tornado的性能,推荐同时使用tornaod的网络框架和HTTP服务器

1.2 Tornado与Django

Django

Django是走大而全的方向,注重的是高效开发,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。

Django提供的方便,也意味着Django内置的ORM跟框架内的其他模块耦合程度高,应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的便利。

session功能

后台管理

ORM

Tornado

Tornado走的是少而精的方向,注重的是性能优越,它最出名的是异步非阻塞的设计方式。

HTTP服务器

异步编程

WebSockets

2.1安装

pip install tornado

2.2经典实例

importtornado.ioloopimporttornado.webclassMainHandler(tornado.web.RequestHandler):defget(self):

self.write("Hello, world")classLoginHandler(tornado.web.RequestHandler):defget(self):#self.write("请登录")

self.render("login.html")def post(self, *args, **kwargs):

v= self.get_argument('username')print(v)

self.redirect('/index.html')

settings= { #路径配置

'template_path': 'templates','static_path': 'static','static_url_prefix': '/ppp/',

}#application对象中封装了:路由信息,配置信息

application =tornado.web.Application([

(r"/login.html", LoginHandler),

(r"/index.html", MainHandler),

],**settings)if __name__ == "__main__":#创建socket对象

#sock = socket.socket()

#inputs = [socket,]

application.listen(8888)#开启 r,w,e = select.select(inputs,)

tornado.ioloop.IOLoop.instance().start()------------login.html------------------------------------

Title

登录

运行该脚本,依次执行:

创建一个Application对象,并把一个正则表达式'/'和类名MainHandler传入构造函数:tornado.web.Application(...)

执行Application对象的listen(...)方法,即:application.listen(8888)

执行IOLoop类的类的 start() 方法,即:tornado.ioloop.IOLoop.instance().start()

整个过程其实就是在创建一个socket服务端并监听8888端口,当请求到来时,根据请求中的url和请求方式(post、get或put等)来指定相应的类中的方法来处理本次请求,在上述demo中只为url为http://127.0.0.1:8888/index的请求指定了处理类MainHandler。所以,在浏览器上访问:http://127.0.0.1:8888/index,则服务器给浏览器就会返回 Hello,world ,否则返回 404: Not Found(tornado内部定义的值), 即完成一次http请求和响应。

由上述分析,我们将整个Web框架分为两大部分:

待请求阶段,即:创建服务端socket并监听端口

处理请求阶段,即:当有客户端连接时,接受请求,并根据请求的不同做出相应的相应

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值