RPC的简单实现(Python)
Posted 划水舟济人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RPC的简单实现(Python)相关的知识,希望对你有一定的参考价值。
Simple RPC Experiment
RPC(Remote Procedure Call),远程过程调用,简单的说是指某一个node请求另一个node为其工作并反馈的机制
上周分布式老师讲解了RPC的模式,其基于S/C(Server/Client)的方式进行通信,Client可以远程调用Server端的方法,其模式图如下:
实践体会
Python3
Twisted
我们此实验采取Python语言编写RPC程序,这是一个简单的小程序,用意是体会上述RPC的框架以及提高动手能力,首先我们先使用命令安装好Twisted
包,以便我们接下来的实验
pip install Twisted
环境搭建好后,我这边使用Pycharm
IDEA来实验
对于Server端,我们需要定义:方法、监听器、注册实例。
from xmlrpc.server import SimpleXMLRPCServer # 导入模块
s = SimpleXMLRPCServer(("localhost", 6666)) # 设置服务端ip和端口
class Server: # 定义类
def _dispatch(self, method, param): # 定义_dispatch方法
print(method) # 在服务端显示调用的方法名
func = getattr(self, method) # 调用接口
return func(*param)
def response(self):
return 'Hello, Client~'
def sub(self, a, b):
return a - b
s.register_instance(Server()) # 注册类方法函数(让客户端发现)
s.serve_forever() # 启动服务端
这样Server端就完成了最简单的服务设置,接下来就是Client端的服务设置
import xmlrpc.client # 导入模块
s = xmlrpc.client.ServerProxy('http://localhost:6666') # 链接服务端
print(s.response()) # 调用函数
print(s.sub(2020, 1024))
由此,全部都设置好,我们先启动Server端的服务后就可以启动Client端的服务了,我们得到下面的输出
# client端的输出
Hello, Client~
996
# Server端的输出
response
127.0.0.1 - - [28/Oct/2020 15:29:55] "POST /RPC2 HTTP/1.1" 200 -
sub
127.0.0.1 - - [28/Oct/2020 15:29:55] "POST /RPC2 HTTP/1.1" 200 -
实验结果图
Server
Client
以上是关于RPC的简单实现(Python)的主要内容,如果未能解决你的问题,请参考以下文章