python tornado TCPserver异步协程实例

项目所用知识点

tornado

socket

tcpserver

协程

异步

tornado tcpserver源码抛析

在tornado的tcpserver文件中,实现了TCPServer这个类,他是一个单线程的,非阻塞的tcp 服务。

为了与上层协议(在tornado中就是HTTPServer)交互,TCPServer提供了一个接口:handle_stream, 要求其子类必需实现该方法,该方法就是主要用来处理应用层逻辑的。

我们可以通过下面代码倒入模块查看源码

fromtornado.tcpserverimportTCPServer

源码中给了好多解释,先把源码注释贴进来

 

python tornado TCPserver异步协程实例_第1张图片

自己仔细看该类的其他方法

 

python tornado TCPserver异步协程实例_第2张图片

通过方法名就能看出来,而且开头已经给出实例怎么去用,所以这个就不一一解释了,我自己的用法如下

 

python tornado TCPserver异步协程实例_第3张图片

具体步骤来分析 一下

TCPServer执行过程

1.server = ProxyServer()创建tcpserver对象,该步骤仅仅做了一个初始化操作

 

python tornado TCPserver异步协程实例_第4张图片

2.想都不要想肯定是开启socket

步骤是执行server.listen(1234)的时候,

 

python tornado TCPserver异步协程实例_第5张图片

3.看下listen里面有调用bind_sockets()方法,来看下该方法

 

python tornado TCPserver异步协程实例_第6张图片

4.接下来执行的是add_sockets()方法

 

python tornado TCPserver异步协程实例_第7张图片

可以看到里面调用了add_accept_handler方法,来我们进去看看该方法干啥了

5.探析add_accept_handler方法

 

python tornado TCPserver异步协程实例_第8张图片

 欣欣然我们来到了最后一步

6.IOLoop.current().start(),然我们看下源码

 

python tornado TCPserver异步协程实例_第9张图片

这一步想了解更多去参考这篇文章http://www.cnblogs.com/MnCu8261/p/6730691.html

代码实例

目前公司有这么一个需求,iphonex--server--ue4,面对两个客户端,达到iphonex把数据给ue4,server起一个代理作用,需求大概就是这样,具体实现代码如下

 

python tornado TCPserver异步协程实例_第10张图片

你可能感兴趣的:(python)