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以编程方式最小化JInternalFrame?   java使用JsonPath将不均匀列表提取为类型化对象   spring如何将java/resources文件获取到InputStream?   Java逻辑错误并不总是存在   java Firebase,更新特定字段   Java stream groupby并同时加入以进行csv导出   java安卓:如果出现任何声音,监听器将录制声音   java如何从多个文件中轮询最后修改的文件并发送到apache camel中的目标端点?   java是否返回多个比较器?   JavaBean IO:Date MMM在CAPS中不解析   当JButton从另一个类单击时,java正在更新JLabel   基类中子类的Java泛型初始化   jakarta ee Java ee制作一个以毫秒为间隔的计时器来发送数据包   json Windows Azure日期格式转换为Java日期