首页 > 编程语言 >python实现RPC(远程过程调用)

python实现RPC(远程过程调用)

时间:2023-08-25 16:46:15浏览次数:33  
标签:xml 调用 zerorpc python json tcp SimpleXMLRPCServer RPC import

python实现RPC(远程过程调用)

# 远程过程调用
-1 借助于rabbitmq 可以跨语言
-2 SimpleXMLRPCServer内置的
-3 zerorpc
-4 grpc 可以跨语言

1.1 SimpleXMLRPCServer 自带的

### 服务端
from xmlrpc.server import SimpleXMLRPCServer
# 通信使用xml格式
class RPCServer(object):
    def add(self,a,b):


        return a+b

# SimpleXMLRPCServer
server = SimpleXMLRPCServer(('localhost', 4242), allow_none=True)
server.register_introspection_functions()
server.register_instance(RPCServer())
server.serve_forever()


#### 客户端
import time
from xmlrpc.client import ServerProxy

#SimpleXMLRPCServer 底层使用了http协议所以速度会稍微慢一些

1.2zerorpc

# 基于 ZeroMQ 通信库的 RPC(远程过程调用)框架

### 服务端
import zerorpc

class RPCServer(object):
    def add(self,a,b):
        print('a+b',a+b)
        return a+b
# zerorpc
s = zerorpc.Server(RPCServer())
s.bind('tcp://0.0.0.0:4243')
s.run()



#### 客户端
import zerorpc
import time


# zerorpc
def zerorpc_client():
    print('zerorpc client')
    c = zerorpc.Client()
    c.connect('tcp://127.0.0.1:4243')

    print(c.add(88, 77))


if __name__ == '__main__':
    zerorpc_client()

rpc和http的关系

# rpc不是一种协议,它是一个概念:远程调用的概念,中间通过网络,底层可以基于tcp,也可以基于http,基于tcp自定义协议
#2.有的rpc框架用了http协议
#3 有的rpc框架直接使用tcp协议

json和xml

# json 和 xml 是两种常见的数据交换格式
区别:
	1.数据格式:json用键值对的形式来表示数据,xml用标签加元素的嵌套结构来表示元素,相比之下json更加简洁紧凑
    2.相对于xml,json的可读性较差。因为xml使用标签和结构表示数据。
    3.xml扩展性高于json
    4.数据类型:json支持字符串、数字、布尔值、数组和对象。xml默认存文本需要开发者自行解析和转换数据类型
    5.json因为更简洁和紧凑,解析和编码速度快。
    

标签:xml,调用,zerorpc,python,json,tcp,SimpleXMLRPCServer,RPC,import
From: https://www.cnblogs.com/yedayangboke/p/17657335.html

相关文章

  • Python的循环语句2——break和continue
    whileTrue:content=input("请输入你要发送的内容(q结束):")print("发送内容:",content)这样的代码会无限循环因此我们需要使用break字段让循环立即停止添加一个判断,如果输入q,即可结束循环跳出whileTrue:content=input("请输入你要发送的内容(q结束):")......
  • python第九天
    一、集合由不同元素组成的集合,集合是无序排列的值,可作为字典的key,集合元素必须为不可变类型例:s={1,2,3,4,4,4,5,6,7}“&”:交集,”|”:并集,”^”:交叉补集,”-”:差集,“<”,“>”二、集合交、差、并集1、关系运算-交集、并集、差集p_s=set(python_1)l_s=set(linux_1)pr......
  • 从 Python3.11 新增 SWAP 字节码到基础语法面试题
    点评:典型的送分考验基础的题目,在其他编程语言中可以使用异或运算的方式来实现交换两个变量的值。但是Python中有更为简单明了的Pythonic做法。条件:不允许使用中间变量@目录方法一使用异或(XOR)运算符方法二使用Python的解包特性(元组解包)来交换变量的值元组解包ROT_......
  • 无涯教程-Python - Lists(列表)
    Python中最基本的数据结构是序列(List)。序列的每个元素都分配有一个数字-其位置或索引。第一个索引为零,第二个索引为1,依此类推。该列表是Python中最通用的数据类型,可以将其写成方括号之间的逗号分隔值列表。列表中的元素不必是同一类型。创建列表就像在方括号之间放置不同的......
  • 7个用于机器学习和数据科学的基本 Python 库
    推荐:使用NSDT场景编辑器助你快速搭建3D应用场景这篇文章针对的是刚开始使用Python进行AI的人,以及那些有经验的人,但对下一步要学习什么有疑问的人。我们将不时花点时间向初学者介绍基本术语和概念。如果您已经熟悉它们,我们鼓励您跳过更基本的材料并继续阅读,以了解对图形执行和急切......
  • android 添加多个c++文件并 调用c++打印调试信息
    首先在gradle文件中配置cmake:注意文件路径一定要对应上android{//...defaultConfig{//...externalNativeBuild{cmake{cppFlags"-frtti-fexceptions-Wno-deprecated-declarations"......
  • Lnton羚通算法算力云平台在OpenCV-Python中如何图像修复 Image Inpainting
    OpenCVPython图像修复【理论】大多数人家里都会有一些旧照片,上面有一些黑点,一些笔画等。你想过把它修复回来吗?我们不能简单地在油漆工具中删除它们,因为它只会用白色结构取代黑色结构,这是没有用的。在这些情况下,使用一种称为图像修补的技术。基本的想法很简单:用邻近的像素替换......
  • iOS开发之--调用打电话,发邮件,发短信的系统功能的代码
    1、调用自带mail[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"mailto://[email protected]"]];2、调用电话phone[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"tel://8008808888"]];NSMutableString*str=[[NSMutable......
  • WPF中窗口控件的跨线程调用
    在多线程里面,UI是不能直接跨线程使用的。在WinForm中,我们要跨线程访问窗口控件,只需要设置属性CheckForIllegalCrossThreadCalls=false;即可。在WPF中要设置Dispatcher属性。msg为要输出的内容privatedelegatevoidoutputDelegate(stringmsg);privatev......
  • VisionPro C#调用QuickBuild操作
    在VisionPro中,常见的操作是:将产品多种型号分别定义成多个QuickBuild。(PS:产品A调用QuickBuild1,产品B调用QuickBuild2) 一个QuickBuild(JobManager)文件下可以包括若干个作业(Job),如果一个项目连接多个工业相机,那么可以将相机单独绑定到Job上。Job中可以包含采像工具、ToolBlock......