afeiluo / thriftpy

Thriftpy has been deprecated, please migrate to https://github.com/Thriftpy/thriftpy2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ThriftPy

Thriftpy has been deprecated, please migrate to thriftpy2

image

image

image

image

ThriftPy is a pure python implementation of Apache Thrift in a pythonic way.

Documentation: https://thriftpy.readthedocs.org/

Installation

Install with pip.

You may also install cython first to build cython extension locally.

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:

And a client:

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 Python 2.7, Python 3.4+, 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)
    • compact protocol (python and cython)
    • json protocol
    • buffered transport (python & cython)
    • framed transport
    • tornado server and client (with tornado 4.0)
    • http server and client
  • 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

  1. Fork the repo and make changes.
  2. Write a test which shows a bug was fixed or the feature works as expected.
  3. Make sure travis-ci or tox tests succeed.
  4. Send pull request.

Contributors

https://github.com/eleme/thriftpy/graphs/contributors

Changelog

https://github.com/eleme/thriftpy/blob/master/CHANGES.rst

About

Thriftpy has been deprecated, please migrate to https://github.com/Thriftpy/thriftpy2

License:MIT License


Languages

Language:Python 92.1%Language:Thrift 7.6%Language:C 0.2%Language:Makefile 0.1%