Python网络编程之xmlrpc模块_第1页
Python网络编程之xmlrpc模块_第2页
Python网络编程之xmlrpc模块_第3页
Python网络编程之xmlrpc模块_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第Python网络编程之xmlrpc模块rpc:远程过程调用协议。简单的来说就是客户端可以很方便得远程调用服务端的接口程序,而不用管底层是如何实现的。

XML-RPC的全称是XMLRemoteProcedureCall,即XML(标准通用标记语言下的一个子集)远程过程调用。它是一套允许运行在不同操作系统、不同环境的程序实现基于Internet过程调用的规范和一系列的实现。这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式。Xml-Rpc的定义尽可能的保持了简单,但同时能够传送、处理、返回复杂的数据结构。这个过程也被大家称为分布式计算。

xmlrpc:使用http协议作为传输协议的rpc机制。

1、注册函数:register_function

以下是定义了一个函数的xmlrpc服务端。

register_function用于注册一个供调用的函数,第一个参数为自己实现的方法名,第二个参数为供客户端调用的方法名。

fromxmlrpc.serverimportSimpleXMLRPCServer#导入模块

s=SimpleXMLRPCServer(("1",4242))#服务端ip假设为1,端口假设为4242

deftwice(x):#定义函数

returnx*2

s.register_function(twice)#注册函数(让客户端发现)

s.serve_forever()#启动服务端

下面是该服务端对应的xmlrpc客户端

根据url和端口号初始化一个服务器对象,然后调用需要的方法即可:

importxmlrpc.client#导入模块

s=xmlrpc.client.ServerProxy('1:4242')#链接服务端

print(s.twice(2))#调用函数

调用成功成功后服务端会显示

2、注册类方法函数:register_instance

服务端如:

fromxmlrpc.serverimportSimpleXMLRPCServer#导入模块

s=SimpleXMLRPCServer(("7",4242))#设置服务端ip和端口

classAnimal:#定义类

defrabit(self,amount):

return4*amount

defchicken(self,amount):

return2*amount

s.register_instance(Animal())#注册类方法函数(让客户端发现)

s.serve_forever()#启动服务端

对应的客户端如下:

importxmlrpc.client#导入模块

s=xmlrpc.client.ServerProxy('7:4242')#链接服务端

print(s.rabit(2))#调用函数

print(s.chicken(2))

3、dispatch方法

接下来要修改一些注册类方法函数接口的参数,对应的修改一下类定义。通过在类定义中添加_dispatch方法可以在远程调用接口的时候经过_dispach。

服务端如下:

fromxmlrpc.serverimportSimpleXMLRPCServer#导入模块

s=SimpleXMLRPCServer(("7",4242))#设置服务端ip和端口

classAnimal:#定义类

def_dispatch(self,method,param):#定义_dispatch方法

print(method)#在服务端显示调用的方法名

func=getattr(self,method)#调用接口

returnfunc(*param)

defrabit(self,amount):

return4*amount

defchicken(self,amount):

return2*amount

s.register_instance(Animal())#注册函数(让客户端发现)

s.serve_forever()#启动服务端

客户端如下:

importxmlrpc.client#导入模块

s=xmlrpc.client.ServerProxy('7:4242')#链接服务端

print(s.rabit(2))#调用函数

print(s.chicken(2))

注:服务器端运行结果:

4、多线程访问

初始化服务器用的不再是SimpleXMLRPCServer了,而是自定义的一个类,继承自两个基类,ThreadingMixIn使其能够支持多线程,其余的操作方式还是和普通的一样。

并且我们新增了一个函数,接受两个参数,计算和,可以看到无

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论