apache thrift的纯python实现。
thriftpy2的Python项目详细描述
节俭:https://github.com/eleme/thriftpy已被弃用,节俭2旨在提供长期支持。
从节俭中迁移?
您只需要:
importthriftpy2asthriftpy
就这样!ThriftPy2与ThriftPy完全兼容。
安装
用PIP安装。
$ pip install thriftpy2
您也可以先安装cython以在本地构建cython扩展。
$ pip install cython thriftpy2
代码演示
Thriftpy使用Thriftpy编写服务器/客户端代码变得超级简单。让我们 查看这个简单的乒乓球服务演示。
我们需要一个“pingpong.thrift”文件:
service PingPong { string ping(), }
然后我们可以创建一个服务器:
importthriftpy2pingpong_thrift=thriftpy2.load("pingpong.thrift",module_name="pingpong_thrift")fromthriftpy2.rpcimportmake_serverclassDispatcher(object):defping(self):return"pong"server=make_server(pingpong_thrift.PingPong,Dispatcher(),'127.0.0.1',6000)server.serve()
还有一个客户:
importthriftpy2pingpong_thrift=thriftpy2.load("pingpong.thrift",module_name="pingpong_thrift")fromthriftpy2.rpcimportmake_clientclient=make_client(pingpong_thrift.PingPong,'127.0.0.1',6000)print(client.ping())
它还支持python 3.5或更高版本上的异步:
importthriftpy2importasynciofromthriftpy2.rpcimportmake_aio_clientecho_thrift=thriftpy2.load("echo.thrift",module_name="echo_thrift")asyncdefrequest():client=awaitmake_aio_client(echo_thrift.EchoService,'127.0.0.1',6000)print(awaitclient.echo('hello, world'))client.close()
importasyncioimportthriftpy2fromthriftpy2.rpcimportmake_aio_serverecho_thrift=thriftpy2.load("echo.thrift",module_name="echo_thrift")classDispatcher(object):asyncdefecho(self,param):print(param)awaitasyncio.sleep(0.1)returnparamdefmain():server=make_aio_server(echo_thrift.EchoService,Dispatcher(),'127.0.0.1',6000)server.serve()if__name__=='__main__':main()
看,就这么简单!
有关详细信息,请参阅源代码中的“examples”和“tests”目录 使用示例。
功能
目前,节俭者有这些特点(与上游相比也有优势 python库):
支持Python2.7、Python3.4+、PyPy和PyPy3。
纯python实现。不再需要编译和安装“thrift” 包裹。你只需要节俭2和节俭文件。
与apache的节俭兼容。你可以把节俭和 正式的实现服务器和客户端,如带有 节俭的顾客或相反的人。
当前实施的协议和传输:
- 二进制协议(python和cython)
- 紧凑协议(python和cython)
- JSON协议
- 缓冲传输(python&cython)
- 框架传输
- Tornado服务器和客户端(带Tornado 4.0)
- http服务器和客户端
- 异步支持(Python3.5或更高版本)
可以直接加载精简文件作为模块,sdk代码将在 苍蝇。
例如,pingpong_thrift = thriftpy2.load("pingpong.thrift",module_name="pingpong_thrift") 将“pingpong.thrift”加载为“pingpong\u thrift”模块。
或者,当thriftpy2.install_import_hook()启用导入挂钩时,您可以 直接使用import pingpong_thrift导入“pingpong.thrift”文件 作为模块,您还可以使用from pingpong_thrift import PingService来 从节俭模块导入特定对象。
简单的rpc服务器/客户端设置。
贡献
- 离开回购协议并进行更改。
- 编写一个测试,显示一个bug已被修复或该特性按预期工作。
- 确保travis-ci或tox测试成功。
- 发送拉取请求。