python json-rpc客户机服务器库-使用python jsonrpc库很简单
python-jsonrpc的Python项目详细描述
安装
pip install python-jsonrpc
http客户端示例
#!/usr/bin/env python# coding: utf-8importpyjsonrpchttp_client=pyjsonrpc.HttpClient(url="http://example.com/jsonrpc",username="Username",password="Password")printhttp_client.call("add",1,2)# Result: 3# It is also possible to use the *method* name as *attribute* name.printhttp_client.add(1,2)# Result: 3# Notifications send messages to the server, without response.http_client.notify("add",3,4)
http服务器示例
#!/usr/bin/env python# coding: utf-8importpyjsonrpcclassRequestHandler(pyjsonrpc.HttpRequestHandler):@pyjsonrpc.rpcmethoddefadd(self,a,b):"""Test method"""returna+b# Threading HTTP-Serverhttp_server=pyjsonrpc.ThreadingHttpServer(server_address=('localhost',8080),RequestHandlerClass=RequestHandler)print"Starting HTTP server ..."print"URL: http://localhost:8080"http_server.serve_forever()
CGI示例
#!/usr/bin/env python# coding: utf-8importpyjsonrpcdefadd(a,b):"""Test function"""returna+b# Handles the JSON-RPC request and gets back the result to STDOUTpyjsonrpc.handle_cgi_request(methods=dict(add=add))
库使用示例
#!/usr/bin/env python# coding: utf-8importpyjsonrpcclassJsonRpc(pyjsonrpc.JsonRpc):@pyjsonrpc.rpcmethoddefadd(self,a,b):"""Test method"""returna+b# 1. Initialize JSON-RPC classrpc=JsonRpc()# 2. Create JSON-RPC string with parameters (= request string)request_json=pyjsonrpc.create_request_json("add",1,2)# request_json = '{"method": "add", "params": [1, 2], "id": "...", "jsonrpc": "2.0"}'# 3. Call the JSON-RPC function and get back the JSON-RPC result (= response string)response_json=rpc.call(request_json)# response_json = '{"result": 3, "id": "...", "jsonrpc": "2.0"}'# 4. Convert JSON-RPC string to Python objectsresponse=pyjsonrpc.parse_response_json(response_json)# 5. Print result or errorifresponse.error:print"Error:",response.error.code,response.error.messageelse:print"Result:",response.result
樱桃色示例
#!/usr/bin/env python# coding: utf-8importcherrypyfrompyjsonrpc.cpimportCherryPyJsonRpc,rpcmethodclassRoot(CherryPyJsonRpc):@rpcmethoddefadd(self,a,b):"""Test method"""returna+bindex=CherryPyJsonRpc.request_handlerprint"Starting HTTP server ..."print"URL: http://localhost:8080"cherrypy.quickstart(Root())
许可证
- GNU库或更低的通用公共许可证(LGPL)
- 麻省理工学院许可证