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 定义一个接口,该接口实现对传入的数据进行大写的格式化处理。
- 创建 xmlrpc_demo python 工程:
- client 目录下的 client.py 实现了客户端用于发送数据并打印接收到 server 端处理后的数据
- 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!'))
- 执行验证结果:
- 先启动 server,之后再执行 client
- client 侧控制台如果打印的结果为: HELLO,WORLD! ,证明 xml-rpc 接口定义成功
- 交流可以加 QQ 群:397234385
- 或者 QQ 扫码入群: