Python-network-programming-python-remote-procedure-call

提供:Dev Guides
移動先:案内検索

Python-リモートプロシージャコール

リモートプロシージャコール(RPC)システムを使用すると、ローカルライブラリで関数を呼び出すときに使用されるのと同じ構文を使用して、リモートサーバーで使用可能な関数を呼び出すことができます。 これは2つの状況で役立ちます。

  • リモートシステムにあるプログラムを呼び出すためのコードを変更することなく、rpcを使用して複数のマシンの処理能力を利用できます。
  • 処理に必要なデータは、リモートシステムでのみ使用可能です。

したがって、Pythonでは、1台のマシンをサーバーとして、別のマシンをクライアントとして扱い、サーバーを呼び出してリモートプロシージャを実行できます。 この例では、ローカルホストを取得し、サーバーとクライアントの両方として使用します。

サーバーの実行

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 finddevguides')")

上記のプログラムを実行すると、次の出力が得られます-

Hello from finddevguides

RPCによる式の評価

上記のコード例を使用して、rpcを介した式の実行と評価にpythonの組み込み関数を使用できます。

import rpyc
conn = rpyc.classic.connect("localhost")
conn.execute('import math')
conn.eval('2*math.pi')

上記のプログラムを実行すると、次の出力が得られます-

6.283185307179586