全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > AI人工智能 > AI通用技术 >

基于Test来使用12-Thrift_Python

时间:2017-12-04 01:07

人气:

作者:admin

标签: python  Test 

导读:基于Test来使用12-Thrift_Python-Thrift_Python/…使用 Python/Node.js/Golang/Php… 都差不多,都可以完成服务和客户端的编写,这里以Python为例。 Thrift的Python端既可以写服务器,也可以写客户端。 (...

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目录,参考学习。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信