Python RPC 之 xml-rpc

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 工程:

  1. client 目录下的 client.py 实现了客户端用于发送数据并打印接收到 server 端处理后的数据
  2. 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
    2. client 侧控制台如果打印的结果为: HELLO,WORLD! ,证明 xml-rpc 接口定义成功


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

Python RPC 之 xml-rpc_第1张图片

你可能感兴趣的:(python)