Présentation de Mprpc, une bibliothèque pour l'implémentation de RPC haute vitesse en Python.
En interne, il utilise le protocole MessagePack RPC et les [autres clients de langage] existants (https://github.com/msgpack-) tels que Java, C ++, PHP et Ruby. La communication avec rpc / msgpack-rpc) est également possible.
Vous pouvez facilement écrire un serveur RPC comme indiqué ci-dessous.
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()
Lorsque vous définissez une méthode en héritant de la classe * RPCServer *, la méthode définie est automatiquement enregistrée en tant que fonction RPC.
sum_client.py
from mprpc import RPCClient
client = RPCClient('127.0.0.1', 6000)
print client.call('sum', 1, 2)
Vous pouvez écrire le client comme ceci.
$ python sum_server.py &
[1] 30945
$ python sum_client.py
3
Enfin, comparez les performances avec l'implémentation officielle existante de MessagePack RPC (basée sur Tornado) et dotCloud Zero RPC. Je vais essayer. Le code que j'utilise peut être trouvé ici (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
Vous pouvez voir qu'il s'exécute environ deux fois plus vite que le client MessagePack RPC existant et environ 14 fois plus vite que Zero RPC.
Recommended Posts