本文讲一下如何用python的xmlrpc开服务,进行server/client的通信。
应用场景:1)需多client访问应用程序给予应答情况——网页服务; 2)数据极大,希望加载一次,后面只用方法调用
解决方案: 开两个服务,一个数据服务,一个网络服务;数据服务端加载数据,网络服务端调用数据,并将结果显示在网络服务中;
外部调用网络服务返回结果;
应用工具:xmlrpc,本文中以python 2.7.3的xmlrpclib为例,其他语言也有相应接口
下面分别说明。
1. 数据端
在本地localhost的8000端口开server服务,load数据,并定义接口查找数据第i个元素(findai).
Server :
from SimpleXMLRPCServer import SimpleXMLRPCServerglobal adef load(): global a a = [1 ,2, 24] return adef findai(i): global a print a[i] return a[i]server = SimpleXMLRPCServer(("localhost", 8000))server.register_function(findai,"findai")load()server.serve_forever()
Client:
import xmlrpclibproxy = xmlrpclib.ServerProxy("http://localhost:8000/")candidate = proxy.findai(1)print "the %d-th number of a is %d" %(1, candidate)
2. 数据端 + 网络端
Client:
import xmlrpclibproxy = xmlrpclib.ServerProxy(