Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Thriftpy/thriftpy
Thriftpy has been deprecated, please migrate to https://github.com/Thriftpy/thriftpy2
https://github.com/Thriftpy/thriftpy
python rpc serialization thrift
Last synced: 3 months ago
JSON representation
Thriftpy has been deprecated, please migrate to https://github.com/Thriftpy/thriftpy2
- Host: GitHub
- URL: https://github.com/Thriftpy/thriftpy
- Owner: Thriftpy
- License: mit
- Archived: true
- Created: 2014-02-11T10:41:45.000Z (almost 11 years ago)
- Default Branch: develop
- Last Pushed: 2018-12-09T14:45:17.000Z (about 6 years ago)
- Last Synced: 2024-10-30T01:02:02.970Z (3 months ago)
- Topics: python, rpc, serialization, thrift
- Language: Python
- Homepage:
- Size: 787 KB
- Stars: 1,152
- Watchers: 78
- Forks: 286
- Open Issues: 72
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGES.rst
- License: LICENSE
Awesome Lists containing this project
README
========
ThriftPy
========**Thriftpy has been deprecated, please migrate to** `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/thriftpyThriftPy is a pure python implementation of
`Apache Thrift `_ 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):- 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