try:
from six.moves import xmlrpc_client
except ImportError:
import xmlrpclib as xmlrpc_client
RPC的服务
RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。
xmlrpclib
是一个将数据定义为xml格式,通过http协议进行远程传输的包
class xmlrpclib.ServerProxy(uri[, transport[, encoding[, verbose[, allow_none[, use_datetime[, context]]]]]])
A ServerProxy
instance is an object that manages communication with a remote XML-RPC server.
一个serverproxy实例,管理远程xml-rpc服务
服务端
import xmlrpclib
import xmlrpclib
from SimpleXMLRPCServer import SimpleXMLRPCServer
#函数
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()
客户端
#coding:utf-8
import xmlrpclib
import xmlrpclib
from SimpleXMLRPCServer import SimpleXMLRPCServer
#服务器
proxy = xmlrpclib.ServerProxy("http://localhost:8000/")
print "3 is even: %s" % str(proxy.is_even(3))
print "100 is even: %s" % str(proxy.is_even(100))
网友评论