Python-network-programming-python-rpc-json-server

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

Python-RPC JSONサーバー

JSONまたはJavaScript Object Notationは、軽量のデータ交換形式です。 人間にとって読み書きは簡単です。 マシンが解析して生成するのは簡単です。 JSONに基づいて行われるRPC呼び出しは、通常のXMLベースのRPC呼び出しよりもはるかにコンパクトで効率的な方法でデータを送信できます。 Pythonモジュール jsonrpclib は、簡単なJSONベースのサーバーとクライアントを作成できます。

以下の例では、単純なJSONサーバーを作成し、その中に関数を作成します。 この関数は、引数の長さと引数自体に言及する大きなリストを小さなリストに分割します。

# server program
from jsonrpclib.SimpleJSONRPCServer import SimpleJSONRPCServer

def findlen(*args):

    res = []
    for arg in args:
        try:
            lenval = len(arg)
        except TypeError:
            lenval = None
        res.append((lenval, arg))
    return res

def main():
    server = SimpleJSONRPCServer(('localhost', 1006))
    server.register_function(findlen)
    print("Start server")
    server.serve_forever()
if __name__ == '__main__':
    main()



# Call by client
from jsonrpclib import Server
def main():
    conn = Server('http://localhost:1006')
    print(conn.findlen(('a','x','d','z'), 11, {'Mt. Abu': 1602, 'Mt. Nanda': 3001,'Mt. Kirubu': 102, 'Mt.Nish': 5710}))
if __name__ == '__main__':
    main()

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

[[u'a', u'x', u'd', u'z']], [None, 11], [4, {u'Mt. Abu': 1602, u'Mt. Kirubu': 102, u'Mt. Nanda': 3001, u'Mt.Nish': 5710}]]