SimpleXMLRPCServer クラスは SocketServer.TCPServer のサブクラスで、基本的なスタンドアロンの XML-RPC サーバーを作成する手段を提供します。
| function[, name]) |
function.__name__の値が用いられます。引数nameは通常の文字列でもユニコード文字列でも良く、Pythonで識別子として正しくない文字(" . "ピリオドなど )を含んでいても。
| instance) |
オブジェクトを登録し、そのオブジェクトのregister_function()で
登録されていないメソッドを公開します。もし、instanceがメソッド
_dispatch()を定義していれば、_dispatch()が、リクエス
トされたメソッド名とパラメータの組を引数として呼び出されます。そして、
_dispatch()の返り値が結果としてクライアントに返されます。
そのAPIは def _dispatch(self, method, params)
(注意: paramsは可変引数リストではありません)です。仕事をするため
に下位の関数を呼ぶ時には、その関数はfunc(*params)のように呼ばれ
ます。_dispatch()の返り値はクライアントへ結果として返されます。
もし、
instanceがメソッド_dispatch()を定義していなければ、リク
エストされたメソッド名がそのインスタンスに定義されているメソッド名から
探されます。
リクエストされたメソッド名がピリオドを含む場合は、(訳注:
通常のPythonでのピリオドの解釈と同様に)階層的にオブジェクトを探索し
ます。そして、そこで見つかったオブジェクトをリクエストから渡された引数
で呼び出し、その返り値をクライアントに返します。
| ) |
system.listMethods、system.methodHelp、system.methodSignature を登録します。
バージョン 2.3 で 新たに追加 された仕様です。
| ) |
以下に例を示します。
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()
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。