ThriftPy is a pure python implementation of Apache Thrift in a pythonic way.
Documentation: https://thriftpy.readthedocs.org/
Installation
Install with pip.
$ pip install thriftpy
You may also install cython first to build cython extension locally.
$ pip install cython thriftpy
Code Demo
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 thriftpy
pingpong_thrift = thriftpy.load("pingpong.thrift", module_name="pingpong_thrift")
from thriftpy.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 thriftpy
pingpong_thrift = thriftpy.load("pingpong.thrift", module_name="pingpong_thrift")
from thriftpy.rpc import make_client
client = make_client(pingpong_thrift.PingPong, '127.0.0.1', 6000)
client.ping()
See, it’s that easy!
You can refer to ‘examples’ and ‘tests’ directory in source code for more usage examples.
Features
Currently ThriftPy have these features (also advantages over the upstream python lib):
Supports python2.6+, python3.3+, pypy and pypy3.
Pure python implementation. No longer need to compile & install the ‘thrift’ package. All you need is thriftpy 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 thriftpy client or the opposite.
Currently implemented protocols and transports:
binary protocol (python and cython)
buffered transport (python & cython)
tornado server and client (with tornado 4.0)
framed transport
json protocol
Can directly load thrift file as module, the sdk code will be generated on the fly.
For example, pingpong_thrift = thriftpy.load("pingpong.thrift", module_name="pingpong_thrift") will load ‘pingpong.thrift’ as ‘pingpong_thrift’ module.
Or, when import hook enabled by thriftpy.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.
Contribute
Fork the repo and make changes.
Write a test which shows a bug was fixed or the feature works as expected.
Make sure travis-ci or tox tests succeed.
Send pull request.
Contributors
Changelog
Release files for thriftpy 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| thriftpy-0.2.0.tar.gz | 177.8 kB | Details |
Release files / thriftpy-0.2.0.tar.gz
| Download URL | thriftpy-0.2.0.tar.gz |
|---|---|
| Size | 177.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a91bd3d83ad54b48be0a254ecf38ae7f0610ad23c320eab95714c1cc1f1ebf06
|
|
BLAKE2b-256 checksum How to use checksums |
bd1f994f3cb283c84355fc247f64aa23b80baf60eb56a442b708fd5db69d38c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |