Skip to main content
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Description: mprpc
=====

.. image:: https://badge.fury.io/py/mprpc.png
:target: http://badge.fury.io/py/mprpc

.. image:: https://travis-ci.org/studio-ousia/mprpc.png?branch=master
:target: https://travis-ci.org/studio-ousia/mprpc

mprpc is a lightweight `MessagePack RPC <https://github.com/msgpack-rpc/msgpack-rpc>`_ library. It enables you to easily build a distributed server-side system by writing a small amount of code. It is built on top of `gevent <http://www.gevent.org/>`_ and `MessagePack <http://msgpack.org/>`_.


Installation
------------

To install mprpc, simply:

.. code-block:: bash

$ pip install mprpc

Alternatively,

.. code-block:: bash

$ easy_install mprpc

Examples
--------

RPC server
^^^^^^^^^^

.. code-block:: python

from gevent.server import StreamServer
from mprpc import RPCServer

class SumServer(RPCServer):
def sum(self, x, y):
return x + y

server = StreamServer(('127.0.0.1', 6000), SumServer())
server.serve_forever()

RPC client
^^^^^^^^^^

.. code-block:: python

from mprpc import RPCClient

client = RPCClient('127.0.0.1', 6000)
print client.call('sum', 1, 2)


RPC client with connection pooling
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: python

import gsocketpool.pool
from mprpc import RPCPoolClient

client_pool = gsocketpool.pool.Pool(RPCPoolClient, dict(host='127.0.0.1', port=6000))

with client_pool.connection() as client:
print client.call('sum', 1, 2)


Performance
-----------

mprpc significantly outperforms the `official MessagePack RPC <https://github.com/msgpack-rpc/msgpack-rpc-python>`_ (**1.8x** faster), which is built using `Facebook's Tornado <http://www.tornadoweb.org/en/stable/>`_ and `MessagePack <http://msgpack.org/>`_, and `ZeroRPC <http://zerorpc.dotcloud.com/>`_ (**14x** faster), which is built using `ZeroMQ <http://zeromq.org/>`_ and `MessagePack <http://msgpack.org/>`_.

Results
^^^^^^^

.. image:: https://raw.github.com/studio-ousia/mprpc/master/docs/img/perf.png
:width: 550px
:height: 150px
:alt: Performance Comparison

mprpc
~~~~~

.. code-block:: bash

% python benchmarks/benchmark.py
call: 9508 qps
call_using_connection_pool: 10172 qps


Official MesssagePack RPC
~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: bash

% pip install msgpack-rpc-python
% python benchmarks/benchmark_msgpackrpc_official.py
call: 4976 qps

ZeroRPC
~~~~~~~

.. code-block:: bash

% pip install zerorpc
% python benchmarks/benchmark_zerorpc.py
call: 655 qps


Documentation
-------------

Documentation is available at http://mprpc.readthedocs.org/.

Keywords: rpc,msgpack,messagepack,msgpackrpc,messagepackrpc,messagepack rpc,gevent
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5

Metadata

Release files for mprpc 0.1.17

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mprpc 0.1.17
File Size Uploaded
mprpc-0.1.17.tar.gz 116.0 kB Details

Release files / mprpc-0.1.17.tar.gz

Download URL mprpc-0.1.17.tar.gz
Size 116.0 kB
Tags Source
SHA-256 checksum
How to use checksums
3589fd127482e291b1ec314d6f0e55cc13311c12932ace356d6178ea1ca28f6a
BLAKE2b-256 checksum
How to use checksums
08dd87e7e3290c00e28423e46b483d288f13ddcc88bf71fd0677b619bdee32d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/28.8.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.4

Release history Release notifications | RSS feed

This release

0.1.17 This release

1 release file

0.1.16

1 release file

0.1.15

1 release file

0.1.14

1 release file

0.1.13

1 release file

0.1.12

1 release file

0.1.11

1 release file

0.1.10

1 release file

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page