Tornado IOLoop

上一篇详细介绍了Reactor模型,IO多路复用作为预备知识,还简略介绍了IOLoop与IO多路复用,以及Reactor 模型的关系。
这篇我想具体描述下IOLoop类。

IOLoop类

A level-triggered I/O loop.

我们使用epoll(Linux) 或 kqueue(BSD和Mac OS X)如果它们能用,不能用将退而使用select()。

IOLoop就是对I/O多路复用的封装,它实现了一个单例,将这个单例保存在IOLoop._instance中。

此外IOLoop还被用来集中运行回调函数以及集中处理定时任务。

IOLoop,它的父类是Configurable类,也就是说:IOLoop是一个Configurable子类
Configurable十分重要,位于tornado.util文件中,它是一个工厂类。
它要求它的子类必须具备三个方法,有点协议的意思,Python中的协议跟接口其实不严格看可以算作一回事。

  • configurable_base
  • configurable_default
  • initialize

因为Configurable中重写了__new__方法,它的子类可以不用定义__init__,直接使用iniaialize来替代,所以才initaialize才会是其子类必须具备的方法。


  转载请注明: 世界的过客 Tornado IOLoop

 上一篇
Tornado执行阻塞函数续 Tornado执行阻塞函数续
上一篇说到了Tornado执行阻塞函数的姿势, 并且在上次使用的时候发现了文档bug提交issue,原本以为会从代码层面更改。。结果亮瞎眼。我直接复制之前UPDATE UPDATE: 这里其实文档有错,在我提的issue之后,文档更为如下,
2018-09-27
下一篇 
Tornado之Reactor Tornado之Reactor
Reactor 等待文件描述符或者socket的读写状态准备就绪,然后将就绪事件传递给对应的处理器,最后由处理器负责实际的干活。 同步IO,就是无论怎么样在从内核空间复制数据到用户空间的时候一定是同步的 具体实现的库就是libevent/l
2018-08-14 Pyclearl
  目录