微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python XML RPC服务器端和客户端实例

一、远程过程调用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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐