A lightweight Messagepack RPC using Python gevent
Project description
mprpc is a lightweight MessagePack 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 and MessagePack.
Installation
To install mprpc, simply:
$ pip install mprpc
Alternatively,
$ easy_install mprpc
Examples
RPC server
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
from mprpc import RPCClient
client = RPCClient('127.0.0.1', 6000)
client.open()
print client.call('sum', 1, 2)
RPC client with connection pooling using gsocketpool
import gsocketpool.pool
from mprpc import RPCClient
client_pool = gsocketpool.pool.Pool(RPCClient, 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 (1.8x faster), which is built using Facebook’s Tornado and MessagePack, and ZeroRPC (14x faster), which is built using ZeroMQ and MessagePack.
Results
mprpc
% python benchmarks/benchmark.py
call: 9061 qps
call_using_connection_pool: 9790 qps
Official MesssagePack RPC
% pip install msgpack-rpc-python
% python benchmarks/benchmark_msgpackrpc_official.py
call: 4976 qps
ZeroRPC
% pip install zerorpc
% python benchmarks/benchmark_zerorpc.py
call: 655 qps
Environment
OS: Mac OS X 10.8.5
CPU: Intel Core i7 2GHz
Memory: 8GB
Python: 2.7.3
Documentation
Documentation is available at http://mprpc.readthedocs.org/.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file mprpc-0.0.1.tar.gz
.
File metadata
- Download URL: mprpc-0.0.1.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c2d9a9ab798e66bc08ac029d02430958e9ba9372f44dc91908fd3c95f18c339b |
|
MD5 | 314d07f48764ecddd028b0dc72e3863c |
|
BLAKE2b-256 | f6ba28f21f3fff4634d40d0411ec1bc618a21acec1f564d788b6f0878a4602ec |