tornado框架介绍

Tornado是一个Python web框架和异步网络库,最初是在FriendFeed开发的。通过使用非阻塞网络I/O, Tornado可以扩展到数以万计的开放连接,非常适合长轮询、WebSockets和其他需要与每个用户进行长时间连接的应用程序。

我们知道tornado是一个异步网络库而且是非阻塞网络IO模型,那, 什么是异步,同步, 什么又是阻塞非阻塞呢?

(来自知乎上面严肃大牛的解答~)

1.同步与异步

同步和异步关注的是消息通信机制 

所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用不会返回。但是一旦调用返回,就得到返回值了。

换句话说,就是由调用者主动等待这个调用的结果

而异步则是相反,调用发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不用立刻得到结果。而是在调用发出后,被调用者通过状态,通知来通知调用者,或通过回调函数处理这个调用。

 2.阻塞与非阻塞

阻塞与非阻塞关注的是程序在等待调用结果时的状态 

阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在等到结果之后才会返回。

非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。

PS:如果想深入了解同步,异步,阻塞,非阻塞,常见的IO模型以及IO多路复用,可以去看看unix网络编程。

 

然后再来看看python三大框架的区别~~ 

简单聊聊django, flask, tornado

1.django框架 

这个框架给人第一印象就是很“重”,django就是一个重型武器,它的MVC设计非常优美。基本上把你开发需要用的功能都给你封装好了,你直接拿来用就好。

所以django开发效率是最高的,但是它给你什么都封装的太好,你必须按着它那套来,可扩展性差了点。

2.flask框架

这个和django对比起来,它就是一个短小精悍的武器,非常轻量级这个框架,内置的组件远远比不上django,但是flask有非常强大且活跃的第三方社区提供的牛逼插件,

真正用起来django的组件可以去找插件来弥补。然后学习flask的话,建议把源码搞明白了,因为flask是个可扩展性非常强的框架,搞懂源码以后方面封装flask的功能。。

3.tornado框架

这个和前面两个框架最大的区别就是,tornado是一个异步网络库,用的非阻塞网络IO模型,所以性能是比较高的。自身还可以用来做web服务器。

PS:其实学会了一个框架,就发现 web框架基本上用法都差不多。提议看下框架源码,帮助挺大的。

 

posted @ 2019-07-11 22:07  下山打老虎i  阅读(635)  评论(0编辑  收藏  举报