Implementieren Sie schnelles RPC in Python

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

Implementieren Sie schnelles RPC in Python
Implementieren Sie sum in Python
Implementieren Sie Traceroute in Python 3
Implementieren Sie alte Chiffren in Python
Implementieren Sie Redis Mutex in Python
Implementieren Sie die Erweiterung in Python
Implementieren Sie den Dijkstra-Algorithmus in Python
Implementieren Sie den Slack Chat Bot in Python
Implementieren Sie das Stacking-Lernen in Python [Kaggle]
Implementieren Sie die Funktion power.prop.test von R in Python
Implementieren Sie das Singleton-Muster in Python
Implementieren Sie die REST-API schnell in Python
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Ich habe versucht, PLSA in Python zu implementieren
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Implementieren Sie __eq__ usw. generisch in der Python-Klasse
Metaanalyse in Python
Unittest in Python
Implementieren Sie den FIR-Filter in Python und C.
Implementieren Sie gemeinsam statistische Hypothesentests in Python
Ich habe versucht, PLSA in Python 2 zu implementieren
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Ich habe versucht, ADALINE in Python zu implementieren
Konstante in Python
Ich habe versucht, PPO in Python zu implementieren
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python