Tornado异步原理
作者:向前的步伐 / 发表: 2019年12月14日 15:13 / tornado/ 阅读量:983
Tornado使用了单进程+协程+IO多路复用的机制,解决了C10K中因为线程过多的上下文切换而导致的CPU资源浪费。
Tornado使用了单进程+协程+IO多路复用的机制,解决了C10K中因为线程过多的上下文切换而导致的CPU资源浪费。
WebSocket协议提供了在客户端和服务器之间持久连接的双向通道。协议本身使用新的ws://URL格式,但它是在标准的HTTP上实现的。通过使用HTTP和HTTPS端口,它避免了从web代理后的网络连接站点时引入的各种问题。
Tornado最受关注的功能,就是它的异步处理web请求的能力,它使得处理非阻塞请求更加容易,最终导致更高效的处理以及更好的可扩展性。
在使用模板之前,我们都会先指定模板文件存放得路径,首先向Application对象的__init__方法中传递一个template_path参数,这个参数告诉Tornado在哪个路径下寻找模板。
过去的web服务器通常都是基于多线程的,也就是说每一个网络请求,服务器都需要一个线程来对应处理单个请求。基于线程的服务器,如Apache,为了传入连接,维护了一个操作系统的线程池。Apache会为每个HTTP连接分配线程池中的一个线程,如果所有的线程处于被占用状态,并且还有内存可用,则生成一个新的线程。Apache的架构在大负载下变得不可预测,为每个打开的连接维护一个很大的线程池容易消耗完服务器的内存资源。