12-Thrift_Python的使用
来源:互联网 发布:淘宝美工网上兼职接单 编辑:程序博客网 时间:2024/06/16 02:52
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-8import syssys.path.append("./pyModule")from thrift.transport import THttpServerfrom thrift.protocol import TJSONProtocolfrom thrift.protocol.TMultiplexedProtocol import TMultiplexedProtocolimport Robotimport Robot.Audioclass RobotAudioHandle: def TtsPlay(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-8import syssys.path.append("./pyModule")from thrift.transport.THttpClient import THttpClientfrom thrift.protocol.TJSONProtocol import TJSONProtocolfrom thrift.protocol.TMultiplexedProtocol import TMultiplexedProtocolimport Robotimport Robot.Audioclass RobotProxy: def flush(self): sys.stdout.flush() def __init__(self): self.Robot_tans = None self.protocol = None self.Audio = None self.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目录,参考学习。
阅读全文
0 0
- 12-Thrift_Python的使用
- mysql的使用12
- 12特殊符号的使用
- 12、spinner的使用以及ArrayAdapter的使用
- 12 .Android Location的使用
- Lesson 12 this的使用
- 12、tags标签的使用
- GUID使用的使用
- ${}的使用
- 的使用
- @[],@()的使用
- ->的使用
- +、-、*、/、%的使用
- &&的使用
- %:的使用
- [转帖]学习使用XHTML的12天
- 学习使用XHTML的12天
- 学习使用XHTML的12天
- Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频
- 11-Thrift_JavaScript的使用
- Anderson's pointer analysis
- 调试HX711
- python 垃圾回收机制
- 12-Thrift_Python的使用
- untiy 脚本API之可视化辅助类Gizmos
- 基于 HTML5 Canvas 的简易 2D 3D 编辑器
- PAT乙级 1072 开学寄语
- DedeCMS程序include目录文件作用解析
- A*算法应用
- java 实现数据挖掘的独热编码 OneHot
- wireshark怎么抓包、wireshark抓包详细图文教程
- 054day(友元和运算重载符的基本概念)