2013年4月21日
摘要: 这是tornado源码分析系列 第四篇,来看看httpserver, 在现在的版本中这个类是继承tcpserver的, 而在1.0中是继承自object, 这个类会把从iostream读出的数据组装成request传递给回调函数,在tornado中, 这个回调函数是web文件中的web.Application, 这个类实现了__call__方法, 相关的会在以后的文章讲到老规矩, 先来看看类和方法的结构:关于这几个类的用处,前面也提到过一些, HttpServer主要是暴露给外面的回调用的,而httpconnection充当一个http协议的翻译器, 将iostream读到的数据翻译成一个类r 阅读全文
posted @ 2013-04-21 00:42 nobutawoproduce 阅读(530) 评论(0) 推荐(0)
  2013年4月19日
摘要: tornado iostream篇:iostream是为了对sokcet异步调用而封装的类, 在后面的httpserver中, tornado会为每一个socket创建一个iostream来对应一个httpconnection函数如下:对外有四个函数, 其中主要的read_until, read_bytes, write三个函数read_until传入两个参数: 读取的结束符和回调函数, 回调函数会把读到的数据作为参数read_bytes和read_until差不多, 只不过第一个参数是读取的长度write不用说了就是对socket的写入, 这里要注意的是并不是马上就对socket写入, 而是 阅读全文
posted @ 2013-04-19 21:50 nobutawoproduce 阅读(480) 评论(0) 推荐(0)
  2013年4月17日
摘要: 这篇文章来写tornado的ioloop,由于看的源码是1.0 可能和现在的版本有一些出入在读源码之前需要有一些socket、tcp/ip和http协议的概念。ioloop是tornado的核心主要实现了事件与回调函数的循环说到事件就不得不说epoll事件模型,当初读源码的时候这部分看了很长时间。首先说说epoll: epoll的定义: epoll是Linux内核为处理大批量句柄而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。现在十分火的nginx服务器就是用epoll作为事件模型。. 阅读全文
posted @ 2013-04-17 23:09 nobutawoproduce 阅读(445) 评论(0) 推荐(0)
  2013年4月15日
摘要: tornado是一个我比较喜欢的框架,框架小,功能确很强大,而且性能强悍。缺点是和其他框架的耦合性太低。最近把1.0的源码读了一遍,受益匪浅,学到了不少东西,而且发现自己还有很多欠缺,很多功能看了很多遍,查了很多资料才看明白。于是准备写一系列的文章来记录一下。首先来看看tornado的基本用法:import tornado.webclass MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world")if __name__ == "__main__": 阅读全文
posted @ 2013-04-15 11:37 nobutawoproduce 阅读(390) 评论(0) 推荐(0)