apache thrift的纯python实现。

thriftpy2的Python项目详细描述


https://travis-ci.com/Thriftpy/thriftpy2.svg?branch=develophttps://img.shields.io/codecov/c/github/Thriftpy/thriftpy2.svghttps://img.shields.io/pypi/dm/thriftpy2.svghttps://img.shields.io/pypi/v/thriftpy2.svghttps://img.shields.io/pypi/pyversions/thriftpy2.svghttps://img.shields.io/pypi/implementation/thriftpy2.svg

节俭: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服务器/客户端设置。

贡献

  1. 离开回购协议并进行更改。
  2. 编写一个测试,显示一个bug已被修复或该特性按预期工作。
  3. 确保travis-citox测试成功。
  4. 发送拉取请求。

赞助商:

./docs/jetbrains.svg

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Eclipse无法识别jsonsimple   linux Tomcat是否在符号链接/usr/bin/java下使用java?   使用Swing工具包构建Java GUI   java Subversive SVN只检出丢失的文件   java语言在没有显式类型转换的情况下能否“完整”?   Selenium>Webdriver>Java>单击模型窗口中的按钮时,另一个后台按钮正在触发   Java私有视频YouTube   JavaScriptJava。lang.NullPointerException servlet   java More Mockito返回\u DEEP\u STUBS悲哀   迭代器Java,谷歌收藏库;AbstractIterator有问题吗?   使用java在flash网页中获取验证码会话的http图像   sql从java向ms access插入数据   java Android WebView不加载URL?   制作java自定义注释以标记用于html清理的bean属性   java如何在Jframe中输出结果