tornado实现高性能无阻塞udp通信(2)——实现异步udp客户端

本文介绍了如何使用Tornado构建一个高性能、无阻塞的异步UDP客户端。客户端在发送数据包后等待服务器响应,利用Tornado的IOStream实现无阻塞IO操作,确保在处理其他请求的同时,能够通过回调函数处理返回结果。虽然提供的代码未处理超时和丢包等细节,但其使用方式与官方HTTP客户端类似。
摘要由CSDN通过智能技术生成

上一篇实现了基于tornado的高性能无阻塞udp服务器,然而光有服务器还是不够的,那么这篇就来实现一个基于tornado的异步udp客户端。


先来分析下客户端的任务:因为整个系统是用来进行代替传统web api的,所以这里的udp客户端不是只发一个包就万事大吉了,而是发出一个包后等待server端返回结果。看似很简单的任务放到tornado上就没那么简单了。传统多进程模型每个访客对应一个进程,在这种模型下我们可以发出udp包之后阻塞该进程等待结果返回。然而对于tornado这种单进程模型,阻塞无异于自杀,所以需要异步写法从而使得发出去一个包之后,tornado进程迅速去处理其他请求等到结果返回时再通过回调函数继续处理该请求。


分析完之后就开始动手啦。先简单封装一个UDPRequest,便于后面处理。只有一点要注意的,数据以'\n\r\n\r'结尾。

class UDPRequest(object):
    def __init__(self,addr,port,data):
        self.addr = addr
        self.port = port
        self.data =
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值