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 time模块详解(常用函数实例讲解,非常好)
Apr 24 Python
python实现提取百度搜索结果的方法
May 19 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
Apr 27 Python
Python文本统计功能之西游记用字统计操作示例
May 07 Python
Python生成短uuid的方法实例详解
May 29 Python
pytorch 转换矩阵的维数位置方法
Dec 08 Python
用Python识别人脸,人种等各种信息
Jul 15 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
Oct 14 Python
python根据文本生成词云图代码实例
Nov 15 Python
python中p-value的实现方式
Dec 16 Python
Python unittest单元测试openpyxl实现过程解析
May 27 Python
django数据模型中null和blank的区别说明
Sep 02 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
新52大事件
2020/03/03 欧美动漫
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
wordpress之wp-settings.php
2007/08/17 PHP
PHP 在线翻译函数代码
2009/05/07 PHP
PHP构造函数与析构函数用法示例
2016/09/28 PHP
php+ajax无刷新上传图片的实现方法
2016/12/06 PHP
一段多浏览器的"复制到剪贴板"javascript代码
2007/03/27 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
js综合应用实例简单的表格统计
2013/09/03 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
javascript判断office版本示例
2014/04/11 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
JavaScript Ajax编程 应用篇
2016/07/02 Javascript
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
使用微信小程序开发弹出框应用实例详解
2018/10/18 Javascript
详解vue中async-await的使用误区
2018/12/05 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
Javascript call及apply应用场景及实例
2020/08/26 Javascript
[02:57]2014DOTA2国际邀请赛-观众采访
2014/07/19 DOTA
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
fastcgi文件读取漏洞之python扫描脚本
2017/04/23 Python
Python生成数字图片代码分享
2017/10/31 Python
python 获取等间隔的数组实例
2019/07/04 Python
HTML5各种头部meta标签的功能(推荐)
2017/03/13 HTML / CSS
Converse匡威法国官网:美国著名帆布鞋品牌
2018/12/05 全球购物
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
公司授权委托书范文
2014/09/21 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
小学假期安全广播稿
2014/09/28 职场文书
收入及婚姻状况证明
2014/11/20 职场文书
2015年班组工作总结
2015/04/20 职场文书
公司联欢会主持词
2015/07/04 职场文书
nginx部署多前端项目的几种方法
2021/05/25 Servers
Spring中bean集合注入的方法详解
2022/07/07 Java/Android