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