11.23.1 SimpleXMLRPCServer オブジェクト

SimpleXMLRPCServer クラスは SocketServer.TCPServer のサブクラスで、基本的なスタンドアロンの XML-RPC サーバーを作成する手段を提供します。

register_function( function[, name])
XML-RPCリクエストに応じる関数を登録します。引数nameが与えられている場合はその値が、関数functionに関連付けられます。これが与えられない場合はfunction.__name__の値が用いられます。引数nameは通常の文字列でもユニコード文字列でも良く、Pythonで識別子として正しくない文字(" . "ピリオドなど )を含んでいても。

register_instance( instance)

オブジェクトを登録し、そのオブジェクトのregister_function()で 登録されていないメソッドを公開します。もし、instanceがメソッド _dispatch()を定義していれば、_dispatch()が、リクエス トされたメソッド名とパラメータの組を引数として呼び出されます。そして、 _dispatch()の返り値が結果としてクライアントに返されます。 そのAPIは def _dispatch(self, method, params) (注意: paramsは可変引数リストではありません)です。仕事をするため に下位の関数を呼ぶ時には、その関数はfunc(*params)のように呼ばれ ます。_dispatch()の返り値はクライアントへ結果として返されます。 もし、 instanceがメソッド_dispatch()を定義していなければ、リク エストされたメソッド名がそのインスタンスに定義されているメソッド名から 探されます。 リクエストされたメソッド名がピリオドを含む場合は、(訳注: 通常のPythonでのピリオドの解釈と同様に)階層的にオブジェクトを探索し ます。そして、そこで見つかったオブジェクトをリクエストから渡された引数 で呼び出し、その返り値をクライアントに返します。

register_introspection_functions( )
XML-RPC のイントロスペクション関数、system.listMethodssystem.methodHelpsystem.methodSignature を登録します。 バージョン 2.3 で 新たに追加 された仕様です。

register_multicall_functions( )
XML-RPC における複数の要求を処理する関数 system.multicall を登録します。

以下に例を示します。

class MyFuncs:
    def div(self, x, y) : return x // y


server = SimpleXMLRPCServer(("localhost", 8000))
server.register_function(pow)
server.register_function(lambda x,y: x+y, 'add')
server.register_introspection_functions()
server.register_instance(MyFuncs())
server.serve_forever()

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。