python rpc webservice_PythonXMLRPC服务器端和客户端实例

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

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python是动态_1.2. Python是动态语言

python是动态语言 1. 动态语言的定义 动态编程语言 是 高级程序设计语言 的一个类别,在计算机科学领域已被广泛应用。它是一类 在运行时可以改变其结构的语言 :例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的…

特征处理

学自 极客时间 《深度学习推荐系统实战》 特征分为两类: 类别特征(性别、地理位置、季节、天气、风格)数值型特征(年龄、收入、点击量、点击率) 类别特征经过 One-Hot 编码后放入特征向量、或者 多个的特征值采用 M…

C#整理1——进制转换

进制转换:二进制,八进制,十进制,十六进制。 (一)二进制转十进制: 1.写2 2.标指数,从右向左,从0开始依次标记 3.乘系数,一一对应。 4.相加。 例:二…

matlab打开笔记本摄像头_基于MATLAB调用电脑摄像头获取视频和图像

clear all;hwaitbar(0.1,请等待);%waitbar的作用是打开或者更新进度条 h waitbar(x,message)x表示进度条的比例长度,message是在进度条上显示的信息global vid;% global 的作用是定义全局变量vid videoinput(winvideo,1);close(h);preview(vid);%得到预览下的默认…

WIN 10 安装 Hadoop 2.7.7 + Spark 2.4.7 记录

文章目录0. 常规解压安装,并添加环境变量1. 下载并覆盖 bin 文件夹2. 使VERSION文件的clusterID一致3. 贴下单机配置4. 测试 Hadoop5. 安装Spark环境:win 10 java 1.8.0_281 Scala 2.11.11 Hadoop 2.7.7 Spark2.4.70. 常规解压安装,并添加…

ios验证邮箱格式

今天做注册界面时,用户在输入邮箱账号后,我不知道如何去辨别用户是否输入有误,我回想起最初我学过一个叫做"正则表达式"的方法, 但是不知道苹果是否能做到,果断的上网查找了一些相关资料。 最简单的就是利用…

canal mysql从库_canal中间件|数据增量同步解决方案

上一文中提到延时双删等策略实现数据一致性的时候,可能存在删除缓存失败的情况,就会出现缓存和数据库不一致的问题。为了应对删除缓存失败而导致数据不一致的问题,可以通过回溯数据库日志文件,提供一个保障的重试机制即可。流程如…

dbscan聚类算法matlab_密度聚类DBSCAN、HDBSCAN(转)

# 密度聚类DBSCAN、HDBSCANDBSCANDBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种基于密度的空间聚类算法。该算法将具有足够密度的区域划分为簇,并在具有…

Spark IDEA 编程环境配置

文章目录1. 下载资料准备2. 建立项目、添加环境设置3. 第一个 Spark 程序学自:Spark机器学习实战 https://book.douban.com/subject/35280412/ 记录一下踩过的坑: 环境:win 10 java 1.8.0_281 Scala 2.11.11 Hadoop 2.7.7 Spark2.4.7 …

Makefile 基本知识

Technorati 标签: Makefile 基本知识最常见的书写方式: CC gcc LD ld STRIP strip CFLAGS : -Os -static -DEZ_OS_LINUX CLFLAGS : -Os -static all: mainEXEC main OBJS main.o mytool1.o mytool2.o INCS mytool1.h mytool2.ha…

python考试题库程序改错_求助,程序改错

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 最近在学习python,其中遇到一道习题是改错的。 原代码如下 def break_words(stuff): """This function will break up words for us.""" words stuff.split( ) return words def sort_…

redis 查看key的有效期_redis中key设置过期时间

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":9,"count":9}]},"card":[{"des":"兼容Redis协议标准的、提供持久化的内存数据…

天池 在线编程 订单分配(回溯)

文章目录1. 题目2. 解题1. 题目 描述 打车派单场景, 假定有N个订单,待分配给N个司机。 每个订单在匹配司机前,会对候选司机进行打分,打分的结果保存在N*N的矩阵score,其中score[i][j]代表订单 i 派给司机 j 的分值。 假定每个订单…

2015年北京户口全攻略

最新统计数据指出 截至2013年底,北京市常住人口为2114.8万人,其中常住外来人口为802.7万人。和“北京户口”捆绑的字眼,历来是身份、福利,以至于幸福感、安全感。那么北京户口有什么好处?外来人口如何落户北京呢&#…

水晶报表 jar包版本过低_工具类学习-UReport报表设计器整合

dada-report报表整合UReport报表设计器工具结合日常工作和学习实践,针对传统报表子站面临的问题,尝试借助UReport报表设计器解决1.可在现有工程基础上引入Ureport2报表设计器Ureport报表设计器是一个基于WEB的在线报表设计器,其具有良好的界面…

LeetCode 1844. 将所有数字用字符替换

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的字符串 s ,它的 偶数 下标处为小写英文字母,奇数 下标处为数字。 定义一个函数 shift(c, x) ,其中 c 是一个字符且 x 是一个数字,函数返回字母表中 c 后面第 x 个字符。 …

ffmpeg编译gb28181_国标GB28181对接视频流

今天抽空写下以GB28181的方式获取摄像机视频流以备后用,同时也希望能帮助到正着手开发GB28181对接视频的同学,这块的资料实在不多。今天讲的内容不涉及到平台对接,平台对接下次有时间再讲,平台对接相对更麻烦点。通过GB28181获取摄…

表格布局等

1.设置黑色细边框技巧 表格的边框0;间距1;背景黑色; 单元格 背景 白色 2.特殊字符使用软键盘 3.使用图像占位符暂时代替未制作好的图片 4.小的背景.gif 平铺变成大的长条,占用资源少 5.当设置一个单元格的高度小于一定值时,无效;因为默认里面有一个空格字符,需要在代码里将空格…

LeetCode 1845. 座位预约管理系统(set)

文章目录1. 题目2. 解题1. 题目 请你设计一个管理 n 个座位预约的系统,座位编号从 1 到 n 。 请你实现 SeatManager 类: SeatManager(int n) 初始化一个 SeatManager 对象,它管理从 1 到 n 编号的 n 个座位。所有座位初始都是可预约的。in…

unity game和scene效果不一样_不同的真石漆装饰效果也是不一样的

外墙真石漆真的是一件很好的产品,具有防火性、防水性、安全且环保、粘力强、永不褪色等特点,无疑是人们较好的选择,在很早之前就已经逐渐的取代了瓷砖和其他石材在人们心中的位置。真石漆的品种不止一种,按照装饰效果我们可以分为…