Articles of tag under tornado

2017-12-18 19:59:26

tornado源码浅析2-TCP网络IO处理

看一个框架我喜欢先从网络方面分析,然后再来分析它是怎么达到并发/并行的效果的,所以这里先看看tornado的网络处理

为了清晰,这里就先从tornado官方的demo入手分析吧。在demos/tcpecho文件夹下面有三个文件,我们看其中的client.pyserver.py

Read More »
2017-12-17 20:36:03

tornado源码浅析1-大纲

tornado的源码其实算是比较少的了,可能是因为不像c系静态语言那样很多轮子要自己造吧。

由于公司使用的是tornado,而且业务量也不小,依据以前用skynet的经验来看,这种框架不知道实现机制的话是很危险的。 所以看看它的源码自然提上日程了,原本以为会有很多黑魔法,没想到啥黑魔法都没有,勉强算得上黑魔法的东西可能就是那个Configurable类了

本以为要花很长时间才能看懂,没想到只花了一天多一点就把机制弄的差不多了。这里先从总体上说说。

tornado的框架我把它分为两大块:

  1. IOStream,它提供数据支撑,比如网络数据的读取都在这里了
  2. IOLoop, 它配合python的生成器提供了真正的协程语义,并且它还处理epoll/kqueue/select

所以看它的源码也是从这两大块来看,这里先说先基础的东西。

Read More »