RPC协议及其python实例[通俗易懂]

RPC协议及其python实例[通俗易懂]RPC协议在OpenStack中广泛使用,那么什么是RPC协议?做什么用的那?搜索了一阵,有了一个大概的印象。RPC是一个应用层的协议,分为client端和server端,server端写好了具体的函数实现,client端远程调用该函数,返回函数的结果。好处是很明显的:首先是可以直接利用别的程序的部分功能,这是最基础的。更重要的,利用rpc可以实现系统的分布式架构,一方面有些功能比

大家好,又见面了,我是你们的朋友全栈君。

RPC协议在OpenStack中广泛使用,那么什么是RPC协议?做什么用的那?

搜索了一阵,有了一个大概的印象。

RPC是一个应用层的协议,分为client端和server端,server端写好了具体的函数实现,client端远程调用该函数,返回函数的结果。

好处是很明显的:

首先是可以直接利用别的程序的部分功能,这是最基础的。更重要的,利用rpc可以实现系统的分布式架构,一方面有些功能比较相关应该放到一起实现,一方面物理因素的原因要求系统分解为多机实现,因此有的功能实现为了一个机器上的进程,而另外的功能实现为在另外机器上的进程,这两个进程间的协同和信息交互就可以通过rpc来实现。

python 支持RPC的应用,看看官方的例子

server端增加了一些应用函数,如add、pow、div等

from SimpleXMLRPCServer import SimpleXMLRPCServer
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler

# Restrict to a particular path.
class RequestHandler(SimpleXMLRPCRequestHandler):
    rpc_paths = ('/RPC2',)

# Create server
server = SimpleXMLRPCServer(("localhost", 8000),
                            requestHandler=RequestHandler)
server.register_introspection_functions()

# Register pow() function; this will use the value of
# pow.__name__ as the name, which is just 'pow'.
server.register_function(pow)

# Register a function under a different name
def adder_function(x,y):
    return x + y
server.register_function(adder_function, 'add')

# Register an instance; all the methods of the instance are
# published as XML-RPC methods (in this case, just 'div').
class MyFuncs:
    def div(self, x, y):
        return x // y

server.register_instance(MyFuncs())

# Run the server's main loop
server.serve_forever()

client端使用RPC远程调用

import xmlrpclib

s = xmlrpclib.ServerProxy('http://localhost:8000')
print s.pow(2,3)  # Returns 2**3 = 8
print s.add(2,3)  # Returns 5
print s.div(5,2)  # Returns 5//2 = 2

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/144479.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • linux uvc协议_USB摄像头的UVC协议[通俗易懂]

    linux uvc协议_USB摄像头的UVC协议[通俗易懂]USB摄像头的UVC协议如今的主流操作系统(如WindowsXPSP2andlater,Linux2.4.6andlater,MacOS10.5andlater)都已提供UVC设备驱动,因此符合UVC规格的硬件设备在不需要安装任何的驱动程序下即可在主机中正常使用。使用UVC技术的包括摄像头、数码相机、类比影像转换器、电视棒及静态影像相机等设备。UVC是Microsoft与另…

    2022年10月26日
  • selenium之PO模式

    selenium之PO模式selenium之PO模式PO模式的精髓:测试对象和测试用例的分离PageObject的设计思想上是把元素定位和元素操作进行分层,这样带来的最直接的好处是当元素发生变化时,只需维护page层的定位,而不需要关心在那些测试用例当中使用了这些元素。在编写测试用例时,也不需要关心元素是如何定位的。下边以百度搜索为例来通过代码来说明PO模式1.封装常用的元素操作base.pyimporttimefromseleniumimportwebdriverclassBasePage(object

  • 一套很好的51单片机教程,云龙51单片机视频教程(王云)[通俗易懂]

    一套很好的51单片机教程,云龙51单片机视频教程(王云)[通俗易懂]我上大一的时候,就开始想学单片机了。刚开始是到处找资料,去了校里的图书室,在网上也搜了一大堆。觉得王云老师讲的“云龙51单片机视频教程“还不错,比较全面、好理解。给大家分享下,希望能帮到有需要人的。全套资料下载地址:https://download.csdn.net/download/weixin_43664824/10824493…

  • thinkPHP的优缺点

    thinkPHP的优缺点

  • 分子模拟软件amber_分子模拟软件Discovery Studio教程(十):构建基于受体-配体复合物药效团模型…

    分子模拟软件amber_分子模拟软件Discovery Studio教程(十):构建基于受体-配体复合物药效团模型…DiscoveryStudio™(简称DS)是专业的生命科学分子模拟软件,DS目前的主要功能包括:蛋白质的表征(包括蛋白-蛋白相互作用)、同源建模、分子力学计算和分子动力学模拟、基于结构药物设计工具(包括配体-蛋白质相互作用、全新药物设计和分子对接)、基于小分子的药物设计工具(包括定量构效关系、药效团、数据库筛选、ADMET)和组合库的设计与分析等。本章节利刃君为大家带来了使用Discover…

  • window.top.location.href 和 window.location.href 的区别

    window.top.location.href 和 window.location.href 的区别

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号