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:不解析XML的简单XML。例外   KIE Workbench的java自定义UI   java将元素从bucket移动到LinkedList,但有一个元素被完全删除   如何将java stream collect转换为scala   java运行AsynkTask多次不工作   java组织。xml。萨克斯。SAXParseException:cvccomplextype。2.4.c:匹配的通配符是严格的   java是一种计算排序算法所需时间的合适方法   java在O(logn)时间内对排序整数数组中具有相同数字的数字进行计数   xpages从当前数据库javaAgent调用另一个数据库的javaAgent   java如何在instagram中上传特定位置的所有照片   JavaApachePOI可以有效地删除多个列   java创建的对象数   java我可以在关闭连接时关闭Oracle JDBC自动提交吗?