博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python中使用XMLRPC(入门)
阅读量:4940 次
发布时间:2019-06-11

本文共 1892 字,大约阅读时间需要 6 分钟。

一、简介

  RPC是Remote Procedure Call的缩写,翻译成中文为:远程方法调用。

它是一种在本地机器上调用远端机器上的一个过程(方法)的技术,这个过程也被大家称为“分布式计算”,是为了提高各个分立机器的“互操作性”而发明出来的技术。

  XML-RPC的全称是XML Remote Procedure Call,即XML远程方法调用。

它是一套允许运行在不同操作系统、不同环境的程序实现基于Internet过程调用的规范和一系列的实现。这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式。Xml-Rpc的定义尽可能的保持了简单,但同时能够传送、处理、返回复杂的数据结构。XML- RPC()是由美国UserLand公司指定的一个RPC协议。简单的理解是:将数据定义为xml格式,通过http协议进行远程传输。

 

二、优点

1. 传输复杂的数据。

2. 通过程序语言的封装,实现远程对象的调用。

三、Python下的XML-RPC

1. 类库:SimpleXMLRPCServer

  一般使用在服务器端,这个模块用来构造一个最基本的XML-RPC服务器框架。

2. 类库:xmlrpclib

  一般使用在客户端,这个模块用来调用注册在XML-RPC服务器端的函数,xmlrpclib并不是一个类型安全的模块,无法抵御恶意构造的数据,这方面的一些处理工作需要交给开发者自己。

 

大致用法:使用SimpleXMLRPCServer模块运行XMLRPC服务器,在其中注册服务器提供的函数或者对象;然后在客户端内使用xmlrpclib.ServerProxy连接到服务器,想要调用服务器的函数,直接调用ServerProxy即可。

 

简单实例:hello xmlprc

服务器端:xmlrpc_server.py

import SimpleXMLRPCServerclass MyObject:    def sayHello(self):        return "hello xmlprc"obj = MyObject()server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8088))server.register_instance(obj)print "Listening on port 8088"server.serve_forever()

 

客户端:xmlrpc_client.py

import xmlrpclibserver = xmlrpclib.ServerProxy("http://localhost:8088")words = server.sayHello()print "result:" + words

 

  打开一个终端,输入命令,运行服务器端程序:

chmod u+x xmlrpc_server.pypython xmlrpc_server.py 打开另一个新的终端,输入命令,运行客户端程序:
chmod u+x xmlrpc_client.pypython xmlrpc_client.py 可以看到客户端控制台上输出了:hello xmlprc。如图: 附: SimpleXMLRPCServer是一个单线程的服务器。这意味着,如果几个客户端同时发出多个请求,其它的请求就必须等待第一个请求完成以后才能继续。 若修改服务器端如下:
from SimpleXMLRPCServer import SimpleXMLRPCServerfrom SocketServer import ThreadingMixInclass ThreadXMLRPCServer(ThreadingMixIn, SimpleXMLRPCServer):passclass MyObject:    def sayHello(self):        return "hello xmlprc"obj = MyObject()server = ThreadXMLRPCServer(("localhost", 8088), allow_none=True)server.register_instance(obj)print "Listening on port 8088"server.serve_forever()

 此时,服务器就支持多线程并发了。

 

转载于:https://www.cnblogs.com/lxt287994374/p/3904219.html

你可能感兴趣的文章
敏捷开发“松结对编程”实践之三:共同估算篇(大型研发团队,学习型团队,139团队,师徒制度,敏捷设计,估算扑克,扑克牌估算)...
查看>>
敏捷开发“松结对编程”实践之四:日常工作篇(大型研发团队,学习型团队,139团队,师徒制度,检查点,代码审查,每日立会)...
查看>>
敏捷开发中asp.net MVC的开发次序感受(先开发View?先开发Model?先开发Controller!)...
查看>>
敏捷开发“松结对编程”实践之五:代码检查篇(大型研发团队,学习型团队,139团队,师徒制度,代码审查)...
查看>>
敏捷开发“松结对编程”实践之六:大型团队篇|后记(大型研发团队,学习型团队,139团队,师徒制度,人员招聘,职业生涯规划)...
查看>>
【预告】火星人敏捷开发手册(免费敏捷教材及宣传材料预览)
查看>>
敏捷外包工程系列之一:序言(敏捷外包工程,敏捷开发,CMMI,软件外包,政府项目,银行项目,电信项目)...
查看>>
敏捷外包工程系列之三:固定合同(敏捷外包工程,敏捷开发,产品负责人,客户价值)...
查看>>
敏捷外包工程系列之二:人员结构(敏捷外包工程,敏捷开发,产品负责人,客户价值)...
查看>>
周鸿祎谈乔布斯(张亮)
查看>>
IT职场人生系列之三:第一份工作
查看>>
IT职场人生系列之四:怎样写简历
查看>>
asp.net中Roles和User的异常处理机制的思考
查看>>
IT职场人生系列之六:员工的公司观
查看>>
IT职场人生系列之七:学外语
查看>>
Rap框架练习
查看>>
补充“为什么Scrum不行”
查看>>
IT职场人生系列之八:行业与公司类型
查看>>
敏捷开发生态系统系列之一:序言及需求管理生态(客户价值导向-可工作软件-响应变化)...
查看>>
敏捷开发生态系统系列之二:敏捷生态系统-计划跟踪 I(跨职能团队-共同估算-每日立会-同行压力)...
查看>>