Einführung in Mprpc, eine Bibliothek zur Implementierung von Hochgeschwindigkeits-RPC in Python.
Intern verwendet es das Protokoll MessagePack RPC und vorhandene Clients in anderen Sprachen wie Java, C ++, PHP und Ruby. Eine Kommunikation mit rpc / msgpack-rpc) ist ebenfalls möglich.
Sie können einfach einen RPC-Server schreiben, wie unten gezeigt.
sum_server.py
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()
Wenn Sie eine Methode definieren, indem Sie die Klasse * RPCServer * erben, wird die definierte Methode automatisch als RPC-Funktion registriert.
sum_client.py
from mprpc import RPCClient
client = RPCClient('127.0.0.1', 6000)
print client.call('sum', 1, 2)
Sie können den Client so schreiben.
$ python sum_server.py &
[1] 30945
$ python sum_client.py
3
Vergleichen Sie abschließend die Leistung mit der vorhandenen offiziellen MessagePack-RPC-Implementierung (basierend auf Tornado) und dotClouds Zero RPC. Ich werde versuchen. Den von mir verwendeten Code finden Sie hier (https://github.com/studio-ousia/mprpc/tree/master/benchmarks).
% python benchmarks/benchmark.py
call: 9508 qps
call_using_connection_pool: 10172 qps
% pip install msgpack-rpc-python
% python benchmarks/benchmark_msgpackrpc_official.py
call: 4976 qps
% pip install zerorpc
% python benchmarks/benchmark_zerorpc.py
call: 655 qps
Sie können sehen, dass es ungefähr doppelt so schnell wie der vorhandene MessagePack RPC-Client und ungefähr 14 Mal schneller als Zero RPC ausgeführt wird.
Recommended Posts