基于Test来使用12-Thrift_Python

基于Test来使用12-Thrift_Python,第1张

Thrift_Python/…使用

Python/Node.js/Golang/Php… 都差不多,都可以完成服务和客户端的编写,这里以Python为例。

Thrift的Python端既可以写服务器,也可以写客户端。 (Golang请参考之前的文章)

Server端

为了兼容JS端,我们这里都以一下要求为标准。

要求:(否则JS无法解析)

Json Protocol打包协议

Http Transport通信

MulTIpleProtocol/Processer(非必需)

1. 业务代码源

同其他语言,使用thrift编译工具,将xxx.thrift文件编译为xx.py文件,通过pip安装thrift基础python库即可。

参考命令:thrift -o . -out ./pyModule --gen py Robot.thrift , pip install thrift

2. 使用方法# coding: utf-8importsys sys.path.append("./pyModule")fromthrift.transporTImportTHttpServerfromthrift.protocolimportTJSONProtocolfromthrift.protocol.TMulTIplexedProtocolimportTMulTIplexedProtocolimportRobotimportRobot.AudioclassRobotAudioHandle:defTtsPlay(self, strTxt, nPlayPriority):""" Parameters: - strTxt - nPlayPriority """print("RobotAudioHandle:",strTxt,nPlayPriority)passhandler = RobotAudioHandle() processor = Robot.Audio.Processor(handler) server = THttpServer.THttpServer(TMultiplexedProcessor(processor,"Audio"), ("127.0.0.1",9000), TJSONProtocol.TJSONProtocolFactory) print("Server start...") server.serve()

这个代码可以仿照Golang的Demo,几乎一样。

吐槽一下:Python的包机制真是个坑!!!

Client端

不多说什么,直接看代码吧~~

Robot源代码库使用服务器那份,方法相同。

# coding: utf-8importsys sys.path.append("./pyModule")fromthrift.transport.THttpClientimportTHttpClientfromthrift.protocol.TJSONProtocolimportTJSONProtocolfromthrift.protocol.TMultiplexedProtocolimportTMultiplexedProtocolimportRobotimportRobot.AudioclassRobotProxy:defflush(self):sys.stdout.flush()def__init__(self):self.Robot_tans =Noneself.protocol =Noneself.Audio =Noneself.Robot_tans = THttpClient("http://127.0.0.1:9000/robot") self.protocol = TJSONProtocol(self.Robot_tans)try: self.Audio = Robot.Audio.Client(TMultiplexedProtocol(self.protocol,"Audio"))except: print("Audio Proxy error!")try: self.Robot_tans.open()except: print("Robot_tans or protocol error!") print("Load RobotProxy Module...") app = RobotProxy()

之前写了太多服务端的代码,写的有点烦了,这里就不做太多解析,直接看代码就好。 ��

总结

Python作为脚本很简单好用,但是在编写严格的代码时真的很是抓狂,特备是Thrift这类文档不丰富的库时,简直要疯掉。

本篇的代码时通过Test项目学习得来的,路漫漫其修远兮~

这就是Thrift的坑,文档太少了。

其他语言的代码,这里省略了。如果有什么问题,请查看Test目录,参考学习。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2525591.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-05
下一篇 2022-08-05

发表评论

登录后才能评论

评论列表(0条)

保存