Thriftpy / thriftpy

Thriftpy has been deprecated, please migrate to https://github.com/Thriftpy/thriftpy2
MIT License
1.15k stars 288 forks source link
python rpc serialization thrift

======== ThriftPy

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

.. image:: http://img.shields.io/travis/eleme/thriftpy/develop.svg?style=flat :target: https://travis-ci.org/eleme/thriftpy

.. image:: http://img.shields.io/github/release/eleme/thriftpy.svg?style=flat :target: https://github.com/eleme/thriftpy/releases

.. image:: http://img.shields.io/pypi/v/thriftpy.svg?style=flat :target: https://pypi.python.org/pypi/thriftpy

.. image:: http://img.shields.io/pypi/dm/thriftpy.svg?style=flat :target: https://pypi.python.org/pypi/thriftpy

ThriftPy is a pure python implementation of Apache Thrift <http://thrift.apache.org/>_ in a pythonic way.

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

Installation

Install with pip.

.. code:: bash

$ pip install thriftpy

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

.. code:: bash

$ 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:

.. code:: python

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:

.. code:: python

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)
print(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):

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