作者:国夫君
来源:见文末
ioloop
`ioloop`是`tornado`的核心模块,也是个调度模块,各种异步事件都是由他调度的,所以必须弄清他的执行逻辑
源码分析
而`ioloop`的核心部分则是...答案当然是不会.
ioloop中有个waker对象,他是由两个fd组成,一个读一个写.
ioloop在初始化的时候把waker绑定到epoll里了,add_callback时会触发waker的读写....Runner初始化过程,调用handle_yield, 查看yielded是否已done了,否则add_future运行Runner的run方法, run方法中如果yielded对象已完成,用对它的gen...所以yielded在什么地方被set_result非常重要, 当被set_result的时候,才会send结果给原func,完成整个异步操作
详情可以查看tornado 中重要的对象 iostream,...):
return
总结
至此,已完成tornado中重要的几个模块的流程,其他模块也是由此而来.写了这么多,越写越卡,就到此为止先吧。