一、远程过程调用RPC
XML-RPC is a Remote Procedure Call method that uses XML passed via HTTP as a transport. With it, a client can call methods with parameters on a remote server (the server is named by a URI) and get back structured data. This module supports writing XML-RPC client code; it handles all the details of translating between conformable Python objects and XML on the wire.
简单地,client可以调用server上提供的方法,然后得到执行的结果。类似与webservice。
推荐查看xmlprc的源文件:C:\\Python31\\Lib\\xmlrpc
二、实例
1) Server
复制代码 代码如下:
from xmlrpc.server import SimpleXMLRPCServer
from xmlrpc.server import SimpleXMLRPCRequestHandler
def div(x,y):
return x – y
class Math:
def _listMethods(self):
# this method must be present for system.listMethods
# to work
return [\’add\’, \’pow\’]
def _methodHelp(self, method):
# this method must be present for system.methodHelp
# to work
if method == \’add\’:
return \”add(2,3) => 5\”
elif method == \’pow\’:
return \”pow(x, y[, z]) => number\”
else:
# By convention, return empty
# string if no help is available
return \”\”
def _dispatch(self, method, params):
if method == \’pow\’:
return pow(*params)
elif method == \’add\’:
return params[0] + params[1]
else:
raise \’bad method\’
server = SimpleXMLRPCServer((\”localhost\”, 8000))
server.register_introspection_functions()
server.register_function(div,\”div\”)
server.register_function(lambda x,y: x*y, \’multiply\’)
server.register_instance(Math())
server.serve_forever()
2)client
复制代码 代码如下:
import xmlrpc.client
s = xmlrpc.client.ServerProxy(\’http://localhost:8000\’)
print(s.system.listMethods())
print(s.pow(2,3)) # Returns 28
print(s.add(2,3)) # Returns 5
print(s.div(3,2)) # Returns 1
print(s.multiply(4,5)) # Returns 20
3)result
