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


Posted in Python onNovember 22, 2014

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

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

Python 相关文章推荐
深入理解Python装饰器
Jul 27 Python
用Python下载一个网页保存为本地的HTML文件实例
May 21 Python
Python实战之制作天气查询软件
May 14 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
Jun 17 Python
python 使用plt画图,去除图片四周的白边方法
Jul 09 Python
python openCV获取人脸部分并存储功能
Aug 28 Python
Python实现语音识别和语音合成功能
Sep 20 Python
Python3.8对可迭代解包的改进及用法详解
Oct 15 Python
python 使用shutil复制图片的例子
Dec 13 Python
python 图像插值 最近邻、双线性、双三次实例
Jul 05 Python
Python如何实现大型数组运算(使用NumPy)
Jul 24 Python
python GUI计算器的实现
Oct 09 Python
Python实现读取目录所有文件的文件名并保存到txt文件代码
Nov 22 #Python
python进程类subprocess的一些操作方法例子
Nov 22 #Python
Python读取环境变量的方法和自定义类分享
Nov 22 #Python
Python中的引用和拷贝浅析
Nov 22 #Python
python实现的文件夹清理程序分享
Nov 22 #Python
Python判断操作系统类型代码分享
Nov 22 #Python
python logging类库使用例子
Nov 22 #Python
You might like
php实现mysql封装类示例
2014/05/07 PHP
php使用PDO方法详解
2014/12/27 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
javascript 弹出层组件(升级版)
2011/05/12 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
appendChild() 或 insertBefore()使用与区别介绍
2013/10/11 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
JS实现自定义简单网页软键盘效果代码
2015/11/05 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
js document.getElementsByClassName的使用介绍与自定义函数
2016/11/25 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
2017/04/11 jQuery
微信小程序开发入门基础教程
2017/04/19 Javascript
js中null与空字符串""的区别讲解
2019/01/17 Javascript
layui递归实现动态左侧菜单
2019/07/26 Javascript
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
python打开网页和暂停实例
2014/09/30 Python
Python功能键的读取方法
2015/05/28 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
基于python和flask实现http接口过程解析
2020/06/15 Python
python中doctest库实例用法
2020/12/31 Python
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
汇科协同Java笔试题
2012/03/31 面试题
《月亮湾》教学反思
2014/04/14 职场文书
社会实践活动总结范文
2014/07/03 职场文书
文明好少年事迹材料
2014/08/19 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
微信小程序实现轮播图指示器
2022/06/25 Javascript