python 对tonardo源码的理解

本文探讨了Facebook开源的Tornado服务器套装,重点分析了其网络部分的ioloop.py和iostream.py。Tornado利用epoll或kqueue实现异步事件处理,提供高性能的web开发解决方案。通过阅读源码,可以了解Tornado的内部实现、非阻塞HTTP服务器、web框架构建以及网络编程知识。文章介绍了Tornado的模块分类,包括核心web框架、异步网络、与其他服务的集成和实用工具。
摘要由CSDN通过智能技术生成

Tornado 是由 Facebook 开源的一个服务器“套装”,适合于做 python 的 web 或者使用其本身提供的可扩展的功能,完成了不完整的 wsgi 协议,可用于做快速的 web 开发,封装了 epoll 性能较好。文章主要以分析 tornado 的网络部分即异步事件处理与上层的 IOstream 类提供的异步IO,其他的模块如 web 的 tornado.web 以后慢慢留作分析。

下面开始我们的 Tornado 之旅,看源代码之前必定需要有一份源码了,大家可以去官网下载一份。这里分析的是 3.1.1。

Tornado 的源码组织如下:

tornado网络部分最核心的两个模块就是ioloop.py与iostream.py,我们主要分析的就是这两个部分。

  • ioloop.py 主要的是将底层的epoll或者说是其他的IO多路复用封装作异步事件来处理。
  • iostream.py主要是对于下层的异步事件的进一步封装,为其封装了更上一层的buffer(IO)事件。

我们先来看看 ioloop(文档地址:http://www.tornadoweb.org/en/stable/ioloop.html):

We use epoll (Linux) or kqueue (BSD and Mac OS X) if they are available, or else we fall back on select(). If you are implementing a system that needs to handle thousands of simultaneous connections, you should use a system that supports either epoll or kqueue.

Example usage for a simple TCP server:

01 import errno
02 import functools
03 import ioloop
04 import socket
05  
06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值