我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python怎么使用SimpleXMLRPCServer实现简单的rpc过程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python怎么使用SimpleXMLRPCServer实现简单的rpc过程

这篇文章主要介绍了python怎么使用SimpleXMLRPCServer实现简单的rpc过程的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python怎么使用SimpleXMLRPCServer实现简单的rpc过程文章都会有所收获,下面我们一起来看看吧。

使用SimpleXMLRPCServer实现rpc

模块

  • SimpleXMLRPCServer

python标准库中自带的模块,无需另外安装

在python3中 SimpleXMLRPCServer已经被合并到xmlrpc.server

定义

class SimpleXMLRPCServer.SimpleXMLRPCServer(addr[, requestHandler[, logRequests[, allow_none[, encoding[, bind_and_activate]]]])

方法

SimpleXMLRPCServer.register_function(function[, name])

  • 注册一个方法,服务

SimpleXMLRPCServer.register_instance(instance[, allow_dotted_names])

  • 注册实例

  • 一个对象在register_function注册后则,不能再在register_instance注册

SimpleXMLRPCServer.register_introspection_functions()

  • 注册一个反函数

SimpleXMLRPCServer.register_multicall_functions()

  • 注册复合函数

例如:

服务端

from SimpleXMLRPCServer import SimpleXMLRPCServer   def respon_string(str):    return "get string :%s"%strif __name__ == '__main__':    s = SimpleXMLRPCServer(('0.0.0.0', 8080))    s.register_function(respon_string,"get_string")    s.serve_forever()

客服端

from xmlrpclib import ServerProxyif __name__ == '__main__':    s = ServerProxy("http://192.168.137.9:8080")    print s.get_string("hello")

结果:

# python get.py 
get string :hello

服务端:

#coding=utf8from SimpleXMLRPCServer import SimpleXMLRPCServerfrom SimpleXMLRPCServer import SimpleXMLRPCRequestHandlerclass RequestHandler(SimpleXMLRPCRequestHandler):    rpc_paths = ('/RPC2',)server = SimpleXMLRPCServer(("0.0.0.0", 8000),                            requestHandler=RequestHandler)print "start service on 0.0.0.0:8000"                            server.register_introspection_functions()#注册pow,幂运算,实际调用的是已有的算数pow()server.register_function(pow)def add(x,y):    return x + yserver.register_function(add, 'add')#注方法在xml-rpc中都是public的class fun:    def div(self, x, y):        return x // yserver.register_instance(fun())server.serve_forever()

客服端:

可以使用下面的方法调用:

import xmlrpclibs = xmlrpclib.ServerProxy('http://192.168.137.9:8000')print s.pow(3,5) print s.add(3,9) print s.div(7,3) print s.system.listMethods()

结果:

243
12
2
['add', 'div', 'pow', 'system.listMethods', 'system.methodHelp', 'system.methodSignature']

register_multicall_functions实现复合调用,多个方法注册到一个调用里

#coding=utf8from SimpleXMLRPCServer import SimpleXMLRPCServerserver = SimpleXMLRPCServer(("0.0.0.0", 8000))server.register_function(pow)server.register_function(lambda x,y: x+y, 'add')server.register_multicall_functions()server.serve_forever()

MultiCall调用复合方法

import xmlrpclibs = xmlrpclib.ServerProxy("http://192.168.137.9:8000")print smulti = xmlrpclib.MultiCall(s)multi.pow(2, 5)try:    for response in multi():        print responseexcept Error, err:    print "ERROR", err

结果:

# python jm.py 
<ServerProxy for 192.168.137.9:8000/RPC2>
32

python与rpc服务

RPC

1.什么是RPC

RPC 就是为解决服务之间信息交互而发明和存在的。

RPC(Remote Procedure Call)&mdash;&mdash;远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。

首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。

在服务器端,进程保持睡眠状态直到调用信息到达为止。

当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息

然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

RPC就是一种远程调用函数接口的方式,说白了,就是一种远程调用函数接口的方式,客户端和服务端之间约定一种契约(函数接口),然后服务端一直等待客户端的调用。

有点像平常的WEB网络请求。

一种用途是在多台服务器之间互相进行调用。

另一个用途则在于,不同编程语言之间都支持这种方式,像Python更是内置对其的支持,不需要额外安装什么库,所以可以直接在多语言的服务器之间互相进行调用。

Socket编程就是RPC通信

2.xmlrp库

简单的服务端

像web请求一样,我们需要确定供客户端访问的url和端口号,以及供客户端调用的方法实现,最后要让我们服务器一直处于等待被访问的状态:

rpc_server.pyfrom xmlrpc.server import SimpleXMLRPCServer

调用函数

def respon_string(str):return “get string:%s”%strif name == ‘main':server = SimpleXMLRPCServer((‘localhost', 8888)) # 初始化server.register_function(respon_string, “get_string”) # 注册get_string函数print (“Listening for Client”)server.serve_forever() # 保持等待调用状态rpc_client.pyfrom xmlrpc.client import ServerProxyif name == ‘main':server = ServerProxy(“http://localhost:8888”) # 初始化服务器print (server.get_string(“RPC RPC”)) # 调用get_string函数并传参,调用get_string让服务端通过respon_string函数处理请求,并返回。

操作

#服务端启动:[root@xujunk tmp]#python3 rpc_server.pyListening for Client#客户端启动:[root@xujunk tmp]#python3 rpc_client.pyget string:RPC RPC #返回结果

关于“python怎么使用SimpleXMLRPCServer实现简单的rpc过程”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“python怎么使用SimpleXMLRPCServer实现简单的rpc过程”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python怎么使用SimpleXMLRPCServer实现简单的rpc过程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python怎么使用SimpleXMLRPCServer实现简单的rpc过程

这篇文章主要介绍了python怎么使用SimpleXMLRPCServer实现简单的rpc过程的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python怎么使用SimpleXMLRPCServer实现简单的rp
2023-07-02

如何在Python中实现一个简单的RPC远程过程调用框架

如何在Python中实现一个简单的RPC远程过程调用框架在分布式系统中,一种常见的通信机制是通过RPC(Remote Procedure Call,远程过程调用)来实现不同进程之间的函数调用。RPC允许开发者像调用本地函数一样调用远程函数,
2023-10-27

怎么使用Python+Pygame实现简单的单词小游戏

本篇内容主要讲解“怎么使用Python+Pygame实现简单的单词小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Python+Pygame实现简单的单词小游戏”吧!一、环境准备1)
2023-07-05

怎么使用Python元类编程实现一个简单的ORM

这篇文章主要讲解了“怎么使用Python元类编程实现一个简单的ORM”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Python元类编程实现一个简单的ORM”吧!概述什么是ORM?  
2023-07-05

怎么使用Python实现简单的人脸识别

小编给大家分享一下怎么使用Python实现简单的人脸识别,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、首先梳理一下实现人脸识别需要进行的步骤:流程大致如此,在此之前,要先让人脸被准确的找出来,也就是能准确区分人脸的分类
2023-06-14

怎么用python实现简单的聊天小程序

这篇文章主要讲解了“怎么用python实现简单的聊天小程序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用python实现简单的聊天小程序”吧!概要这是一个使用python实现一个简单的
2023-06-20

怎么用Python实现简单的C++程序范围

本篇内容主要讲解“怎么用Python实现简单的C++程序范围”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python实现简单的C++程序范围”吧!1. 实验说明问题要求:针对静态单赋值(
2023-06-29

Python使用socket实现简单的文

因为工作需要,要在两台设备之间进行压力测试。即A设备不断往B设备发送文件,B设备接收文件后校验文件是否正确接收。       用Python的socket模块写了简单的Server和Client脚本。Server负责监听端口,接收Clien
2023-01-31

怎么使用jQuery实现简单的流程显示

这篇文章主要介绍了怎么使用jQuery实现简单的流程显示的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用jQuery实现简单的流程显示文章都会有所收获,下面我们一起来看看吧。jQuery是一个非常流行的J
2023-07-05

怎么用Python实现简单的计时器

这篇文章主要介绍“怎么用Python实现简单的计时器”,在日常操作中,相信很多人在怎么用Python实现简单的计时器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python实现简单的计时器”的疑惑有所
2023-06-20

Python模块怎么实现简单的调用

这篇文章给大家分享的是有关Python模块怎么实现简单的调用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通
2023-06-14

Mybatis调用MySQL存储过程的简单实现

1.存储过程的简介我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该
2023-05-31

使用Python实现简单的爬虫框架

爬虫是一种自动获取网页内容的程序,它可以帮助我们从网络上快速收集大量信息。下面我们将学习如何使用Python编写一个简单的爬虫框架,感兴趣的可以了解一下
2023-05-19

用Python实现一个简单的线程池

线程池的概念是什么?在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是 如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能
2023-01-31

怎么使用python实现一个简单的贪吃蛇游戏

本篇内容主要讲解“怎么使用python实现一个简单的贪吃蛇游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用python实现一个简单的贪吃蛇游戏”吧!pygame 写的“贪吃蛇”小游戏:
2023-07-02

怎么用python实现简单聊天功能

本篇内容主要讲解“怎么用python实现简单聊天功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用python实现简单聊天功能”吧!服务端:from socket import socke
2023-06-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录