ターン:https://www.cnblogs.com/lxt287994374/p/3904219.html
I.はじめに
RPCリモートプロシージャコールの略で、と中国語に翻訳:リモートメソッド呼び出し。
それは、このプロセスは一般に「計算分散」として知られているローカルマシン上のマシンの先端に手順(メソッド)を呼び出すための技術であり、それはマシンの個々の離散的「相互運用性」を向上させるためであり、発明します技術。
XML-RPC XMLリモートプロシージャコール、つまり、XMLリモートメソッド呼び出しの略です。
これは、インターネットベースのプロシージャ呼び出し、一連の実現を達成するために、異なるオペレーティングシステム、異なる環境規範や手続き上で実行が許可のセットです。このリモートプロシージャは、トランスポートプロトコル、送信情報の符号化形式としてXMLとしてHTTPを使用して呼び出します。XML-RPCは、できるだけ簡単に保つ定義しかし、複雑なデータ構造に戻るを送信することができます。RPC XML-(http://www.xmlrpc.com)RPCは、米国企業ユーザランドで指定されたプロトコルです。理解することが簡単である:XMLデータフォーマットは、HTTPプロトコルを介して遠隔の送信のために、と定義されます。
第二に、利点
1.複雑なデータの送信。
プログラミング言語をカプセル化すること2.実装は、リモートオブジェクトを呼び出します。
三、PythonでXML-RPC
1.ライブラリ:のSimpleXMLRPCServer
一般的に、サーバー側で使用され、このモジュールは、XML-RPCサーバの基本的な枠組みを構築するために使用されます。
2.ライブラリ:xmlrpclib
クライアントの一般的な使用、このモジュールは、XML-RPCサーバーに登録された関数、xmlrpclibないタイプセーフモジュール、悪質なデータ構造に抵抗することができない、自分自身を開発するために、このエリアを必要としているいくつかの処理作業を呼び出すために使用されています。
一般的に使用:のSimpleXMLRPCServer関数またはオブジェクト登録サーバが提供される実行XMLRPCサーバモジュールとクライアント内のサーバーにxmlrpclib.ServerProxy接続を使用し、関数を呼び出すしたいサーバー、あなたは直接はServerProxyを呼び出すことができます。
簡単な例:ハローxmlprc
サーバー側:xmlrpc_server.py
インポートのSimpleXMLRPCServer クラスMyObjectに: デフのsayHello(自己): 戻り値は"hello xmlprc" OBJ = MyObjectに() サーバー= SimpleXMLRPCServer.SimpleXMLRPCServer(( "localhost"を、8088)) server.register_instance(OBJ) 印刷"のポート8088でリッスン" サーバー。 serve_forever()
クライアント:xmlrpc_client.py
輸入xmlrpclibの サーバー= xmlrpclib.ServerProxy( "のhttp:// localhostを:8088") の言葉= server.sayHello() 印刷"結果:" +言葉
ターミナルを開き、サーバープログラムを実行するためのコマンドを入力します。
U + X xmlrpc_server.py chmodの Pythonはxmlrpc_server.py
別の新しいターミナルを開くには、クライアントプログラムを実行するためのコマンドを入力します。
X-xmlrpc_client.py U + chmodの Pythonのxmlrpc_client.pyは
ハローxmlprc:クライアントコンソールの出力を見ることができます。図:
添付ファイル:
のSimpleXMLRPCServerは、シングルスレッドのサーバです。複数のクライアントが同時に複数の要求を行った場合、他の要求が最初の要求の後に待機しなければならないことを、この手段は、続行する前に完了します。
次のようにサーバ側では変更されている場合:
SimpleXMLRPCServerインポートのSimpleXMLRPCServerから SocketServerインポートThreadingMixInから パス:クラスThreadXMLRPCServer(ThreadingMixIn、のSimpleXMLRPCServer) クラスMyObjectに: DEFのsayHello(自己): 戻り"ハローxmlprc" OBJ = MyObjectに() サーバ= ThreadXMLRPCServer(( "ローカルホスト"、8088)、引数allow_none =真) server.register_instance(OBJ) "ポート8088でリッスンして"印刷 server.serve_forever()
この時点で、サーバーは、マルチスレッドをサポートしています。