Python RPC 之 xml-rpc

作者: 谢烟客 | 来源:发表于2017-03-14 10:10 被阅读137次

    xml-rpc 简介:

    xml-rpc 的全称是 XML Remote Procedure Call,即XML远程方法调用。它是一套基于 Internet 过程调用而实现了平台无关性与语言无关性的标准规范。不同语言有不同 xml-rpc 实现,本篇主要介绍 python 的 xml-rpc 实现。

    安装 xml-rpc:

    python sdk 原生支持了xml-rpc,所以只要安装了python sdk 就可以使用xml-rpc了。

    实践:

    下面我们使用 xml-rpc 定义一个接口,该接口实现对传入的数据进行大写的格式化处理。

    • 创建 xmlrpc_demo python 工程:
    Paste_Image.png
    1. client 目录下的 client.py 实现了客户端用于发送数据并打印接收到 server 端处理后的数据
    1. server 目录下的 server.py 实现了服务端用于接收客户端发送的数据,并对数据进行大写处理后返回给客户端
    • 实现 server 端:
    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    
    __author__ = 'xieyanke'
    
    from xmlrpc.server import SimpleXMLRPCRequestHandler, SimpleXMLRPCServer
    
    __HOST = 'localhost'
    __PORT = '8008'
    
    
    class RPCHandler(SimpleXMLRPCRequestHandler):
        rpc_paths = (
            '/',   # 定义 RPC 接口的请求地址
        )
    
    
    with SimpleXMLRPCServer((__HOST, __PORT), requestHandler=RPCHandler) as rpcserver:
        rpcserver.register_introspection_functions()
    
    
        def formate_data(str):
            return str.upper()
    
    
        rpcserver.register_function(formate_data, 'formate_data')  # 这里 'formate_data' 可以不与自定义的方法名字相同,只要 server 端与 client 端做好约定即可
    
        rpcserver.serve_forever()
    
    • 实现 client 端:
    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    
    __author__ = 'xieyanke'
    
    import xmlrpc.client
    
    __HOST = 'localhost'
    __PORT = '8080'
    
    server = xmlrpc.client.ServerProxy('http://' + __HOST + ':' + __PORT + '/')  # 这里需要注意的是结尾的 ‘/' 必须存在,如果不绑定根,xmlrpc client 默认绑定的 url 为 host:port/RPC2 
    
    print(server.formate_data('hello,world!'))
    
    • 执行验证结果:
    1. 先启动 server,之后再执行 client
    1. client 侧控制台如果打印的结果为: HELLO,WORLD! ,证明 xml-rpc 接口定义成功

    • 交流可以加 QQ 群:397234385
    • 或者 QQ 扫码入群:
    qq群.jpg

    相关文章

      网友评论

        本文标题:Python RPC 之 xml-rpc

        本文链接:https://www.haomeiwen.com/subject/lxtxnttx.html