python tornado TCPserver异步协程实例
项目所用知识点
tornado
socket
tcpserver
协程
异步
tornado tcpserver源码抛析
在tornado的tcpserver文件中,实现了TCPServer这个类,他是一个单线程的,非阻塞的tcp 服务。
为了与上层协议(在tornado中就是HTTPServer)交互,TCPServer提供了一个接口:handle_stream, 要求其子类必需实现该方法,该方法就是主要用来处理应用层逻辑的。
我们可以通过下面代码倒入模块查看源码
fromtornado.tcpserverimportTCPServer
源码中给了好多解释,先把源码注释贴进来
自己仔细看该类的其他方法
通过方法名就能看出来,而且开头已经给出实例怎么去用,所以这个就不一一解释了,我自己的用法如下
具体步骤来分析 一下
TCPServer执行过程
1.server = ProxyServer()创建tcpserver对象,该步骤仅仅做了一个初始化操作
2.想都不要想肯定是开启socket
步骤是执行server.listen(1234)的时候,
3.看下listen里面有调用bind_sockets()方法,来看下该方法
4.接下来执行的是add_sockets()方法
可以看到里面调用了add_accept_handler方法,来我们进去看看该方法干啥了
5.探析add_accept_handler方法
欣欣然我们来到了最后一步
6.IOLoop.current().start(),然我们看下源码
这一步想了解更多去参考这篇文章http://www.cnblogs.com/MnCu8261/p/6730691.html
代码实例
目前公司有这么一个需求,iphonex--server--ue4,面对两个客户端,达到iphonex把数据给ue4,server起一个代理作用,需求大概就是这样,具体实现代码如下