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

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

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

(0)
上一篇 2022年5月19日 下午2:00
下一篇 2022年5月19日 下午2:20


相关推荐

  • 便携AI聚合API ChatGPT 4o生图功能使用教程

    便携AI聚合API ChatGPT 4o生图功能使用教程

    2026年3月16日
    2
  • 低压差降压稳压电路设计

    低压差降压稳压电路设计TPS73xx系列(TPS7301,25,30,33,48,50等)是一款低压差串联型降压稳压芯片,可以提供500mA的稳压电流,在输出100mA电流的情况下,输入输出电压压差可以最多不超过35mV,这可以大大提高稳压电源的效率,或者提供大的电源稳压范围。除了主要提供电源稳压功能之外,芯片内部还集成了电压检测模块,可以输出低电平RESET信号,为供电的微控制器、处理器提供复位功能。TPS7…

    2022年6月20日
    31
  • panda’_pandas map

    panda’_pandas mappandas.DataFrame.iloc()纯基于位置的整数索引输入格式:一个整数列表或数组,如[4,3,0]。一个带有int类型的slice对象,例如1:7。一个布尔值数组。一个具有一个参数的可调用函数,返回索引案例mydict=[{‘a’:1,’b’:2,’c’:3,’d’:4},{‘a’:100,’b’:200,’c’:300,’d’:400},{‘a’:1000,’b’:2000,’c’:30

    2022年8月30日
    9
  • pycharm2021.3激活 3月最新注册码

    pycharm2021.3激活 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    107
  • xshell安装步骤_oracle安装sid已在使用

    xshell安装步骤_oracle安装sid已在使用1.安装xhost[root@oracle11~]#yumwhatprovides”*/xhost”Loadedplugins:fastestmirrorLoadingmirrorspeedsfromcachedhostfile*base:mirrors.163.com*extras:mirrors.aliyun.com*updates:mirrors.aliyun.combase/7/x86_64/filelists_db

    2025年8月28日
    5
  • Webstorm关闭ESLint警告

    Webstorm关闭ESLint警告

    2022年4月30日
    61

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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