Python中文社区Python 指南程序员

Python RPC 之 xml-rpc

2017-03-14  本文已影响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 定义一个接口,该接口实现对传入的数据进行大写的格式化处理。

Paste_Image.png
  1. client 目录下的 client.py 实现了客户端用于发送数据并打印接收到 server 端处理后的数据
  1. server 目录下的 server.py 实现了服务端用于接收客户端发送的数据,并对数据进行大写处理后返回给客户端
#! /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()
#! /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群.jpg
上一篇下一篇

猜你喜欢

热点阅读