Python-リモートプロシージャコール
リモートプロシージャコール(RPC)システムを使用すると、ローカルライブラリの関数を呼び出すときに使用されるのと同じ構文を使用して、リモートサーバーで使用可能な関数を呼び出すことができます。これは2つの状況で役立ちます。
- リモートシステムにあるプログラムを呼び出すためのコードを変更することなく、rpcを使用して複数のマシンからの処理能力を利用できます。
- 処理に必要なデータは、リモートシステムでのみ利用できます。
したがって、Pythonでは、あるマシンをサーバーとして扱い、別のマシンをクライアントとして扱い、サーバーを呼び出してリモートプロシージャを実行できます。この例では、ローカルホストを取得して、サーバーとクライアントの両方として使用します。
サーバーの実行
Python言語には、ローカルサーバーとして実行できる組み込みサーバーが付属しています。このサーバーを実行するスクリプトは、pythonインストールのbinフォルダーの下にあり、classic.pyという名前が付けられています。Pythonプロンプトで実行し、ローカルサーバーとして実行されていることを確認できます。
python bin/classic.py
上記のプログラムを実行すると、次の出力が得られます-
INFO:SLAVE/18812:server started on [127.0.0.1]:18812
クライアントの実行
次に、rpycモジュールを使用してクライアントを実行し、リモートプロシージャコールを実行します。以下の例では、リモートサーバーで印刷機能を実行します。
import rpyc
conn = rpyc.classic.connect("localhost")
conn.execute("print('Hello from Tutorialspoint')")
上記のプログラムを実行すると、次の出力が得られます-
Hello from Tutorialspoint
RPCによる発現評価
上記のコード例を使用すると、rpcを介した式の実行と評価にPythonの組み込み関数を使用できます。
import rpyc
conn = rpyc.classic.connect("localhost")
conn.execute('import math')
conn.eval('2*math.pi')
上記のプログラムを実行すると、次の出力が得られます-
6.283185307179586