ThriftPy: https://github.com/eleme/thriftpy has been deprecated, ThriftPy2 aims to provide long term support.
All you need is:
import thriftpy2 as thriftpy
That's it! thriftpy2 is fully compatible with thriftpy.
Install with pip.
$ pip install thriftpy2
You may also install cython first to build cython extension locally.
$ pip install cython thriftpy2
ThriftPy make it super easy to write server/client code with thrift. Let's checkout this simple pingpong service demo.
We need a 'pingpong.thrift' file:
service PingPong { string ping(), }
Then we can make a server:
import thriftpy2
pingpong_thrift = thriftpy2.load("pingpong.thrift", module_name="pingpong_thrift")
from thriftpy2.rpc import make_server
class Dispatcher(object):
def ping(self):
return "pong"
server = make_server(pingpong_thrift.PingPong, Dispatcher(), '127.0.0.1', 6000)
server.serve()
And a client:
import thriftpy2
pingpong_thrift = thriftpy2.load("pingpong.thrift", module_name="pingpong_thrift")
from thriftpy2.rpc import make_client
client = make_client(pingpong_thrift.PingPong, '127.0.0.1', 6000)
print(client.ping())
And it also supports asyncio on Python 3.5 or later:
import thriftpy2
import asyncio
from thriftpy2.rpc import make_aio_client
echo_thrift = thriftpy2.load("echo.thrift", module_name="echo_thrift")
async def request():
client = await make_aio_client(
echo_thrift.EchoService, '127.0.0.1', 6000)
print(await client.echo('hello, world'))
client.close()
import asyncio
import thriftpy2
from thriftpy2.rpc import make_aio_server
echo_thrift = thriftpy2.load("echo.thrift", module_name="echo_thrift")
class Dispatcher(object):
async def echo(self, param):
print(param)
await asyncio.sleep(0.1)
return param
def main():
server = make_aio_server(
echo_thrift.EchoService, Dispatcher(), '127.0.0.1', 6000)
server.serve()
if __name__ == '__main__':
main()
See, it's that easy!
You can refer to 'examples' and 'tests' directory in source code for more usage examples.
Currently ThriftPy have these features (also advantages over the upstream python lib):
Python 3.6+ and PyPy3.
Pure python implementation. No longer need to compile & install the 'thrift' package. All you need is thriftpy2 and thrift file.
Compatible with Apache Thrift. You can use ThriftPy together with the official implementation servers and clients, such as a upstream server with a thriftpy2 client or the opposite.
Currently implemented protocols and transports:
from thriftpy2.protocol import TApacheJSONProtocolFactory
and pass
this to the proto_factory
argument where appropriate.Can directly load thrift file as module, the sdk code will be generated on the fly.
For example, pingpong_thrift = thriftpy2.load("pingpong.thrift", module_name="pingpong_thrift")
will load 'pingpong.thrift' as 'pingpong_thrift' module.
Or, when import hook enabled by thriftpy2.install_import_hook()
, you can
directly use import pingpong_thrift
to import the 'pingpong.thrift' file
as module, you may also use from pingpong_thrift import PingService
to
import specific object from the thrift module.
Easy RPC server/client setup.
tox
tests succeed.https://github.com/Thriftpy/thriftpy2/graphs/contributors
https://github.com/Thriftpy/thriftpy2/blob/master/CHANGES.rst
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。