背景
Xml Rpc是使用http协议做为传输协议的rpc机制,使用http作为传输协议,XML作为传送信息的编码格式。
Xml-Rpc的定义尽可能的保持了简单,但同时能够传送、处理、返回复杂的数据结构。XML- RPC(http://www.xmlrpc.com)是由美国UserLand公司指定的一个RPC协议。简单的理解是:将数据定义为xml格式,通过http协议进行远程传输。
一个rpc系统,必然包括2个部分:
rpc client:用来向rpc server调用方法,并接收方法的返回数据;
rpc server:用于响应rpc client的请求,执行方法,并回送方法执行结果。
Python对xmlRPC的支持:
xmlrpc — XMLRPC server and client modules — Python 3.9.7 documentation
python提供了xmlrpc模块,可以直接基于该模块建立rpc的客户端和servef端。
python2和3对xmlrpc的实现有一些区别:xmlrpclib模块在python3中重命名为xmlrpc.client
Example: server:
from xmlrpc.server import SimpleXMLRPCServer
print("Server...")
def is_even(n):
return n % 2 == 0
server = SimpleXMLRPCServer(("localhost", 8000))
print("Listening on port 8000...")
server.register_function(is_even, "is_even")
server.serve_forever()
Example: client:
import xmlrpc.client
with xmlrpc.client.ServerProxy("http://localhost:8000/") as proxy:
print("3 is even: %s" % str(proxy.is_even(3)))
print("100 is even: %s" % str(proxy.is_even(100)))