|
9 months ago | |
---|---|---|
.idea | 9 months ago | |
__pycache__ | 1 year ago | |
a2s | 9 months ago | |
a2s.egg-info | 9 months ago | |
build | 9 months ago | |
dist | 9 months ago | |
proto | 1 year ago | |
README.md | 9 months ago | |
requement.txt | 1 year ago | |
setup.py | 9 months ago |
# 使用前请安装工具包
# pip install a2s
# 下载地址:http://192.168.3.10:8080/simple/a2s/
from a2s.a2s_server import watch, simple_params
# 方式一 使用简单方式启动 .py文件命令行参数 python server.py --h
@simple_params
@watch
def main(data: bytes, *args, **kwargs) -> bytes:
'''
:param data: 固定格式,调用端发送的数据data
:param args: 固定格式
:param kwargs: 固定格式
:return: 返回调用端的 data
'''
# 内部处理程序
data = data.decode("utf-8")
data += "服务端处理过了数据"
return data.encode("utf-8")
main()
# 方式二 自定义启动方式
@watch
def main(data: bytes, *args, **kwargs) -> bytes:
'''
:param data: 固定格式,调用端发送的数据data
:param args: 固定格式
:param kwargs: 固定格式
:return:返回调用端的 data
'''
# 内部处理程序
data = data.decode("utf-8")
data += "服务端处理过了数据"
return data.encode("utf-8")
main(nats_host="192.168.3.240", nats_port=19090, subject="test", queue="main")
a2s_client # 简化a2s客户端调用
from a2s.a2s_client import a2s_execute
if __name__ == '__main__':
# bytes_data 调用端的 data 记得编码
result = a2s_execute(a2s_ip="192.168.3.240:19094", topic="test", timeout=10, bytes_data=b"hello")
# result 服务端返回的 data 记得解码
print(result.decode("utf-8"))
from a2s.a2s_monitor import watch_monitor
service_count = watch_monitor('192.168.3.240:9090', 'goods_service')
dict(字典) 序列化反序列化
grpc 序列化反序列化
import json
import base64
def grpc_serialize(resp):
"""
grpc对象序列化
:param resp:resp = Text2VectorReq(text=data)
:return:
"""
resp.SerializeToString()
return resp
def grpc_deserialize(req, data):
"""
grpc对象反序列化
:param req: req = Text2VectorResp()
:param data: req的序列化对象
:return:
"""
req.ParseFromString(data)
return req
def json_serialize(dict_data):
"""
json对象序列化
:param resp: 字典
:return:
"""
# 将字典转换为 JSON 格式的字符串
json_data = json.dumps(dict_data)
# 将 JSON 字符串转换为字节流
bytes_data = json_data.encode('utf-8')
return bytes_data
def json_deserialize(bytes_data):
"""
grpc对象反序列化
:param bytes_data:
:return:
"""
# 将字节流转换为 JSON 字符串
json_data = bytes_data.decode('utf-8')
# 将 JSON 字符串转换为字典对象
dict_data = json.loads(json_data)
return dict_data
# 二进制文件传输,json序列化解决方案:
# 1. 将二进制文件转换为base64编码的字符串
# 2. 将base64编码的字符串转换为二进制文件
def binary_to_base64(binary_data):
"""
二进制转化为base64字符串
:param binary_data:
:return:
"""
base64_str = base64.b64encode(binary_data).decode('utf-8') # 将bytes转换为base64字符串
return base64_str
def base64_to_binary(base64_str):
"""
base64字符串转化为二进制
:param base64_str:
:return:
"""
binary_data = base64.b64decode(base64_str) # 将base64字符串转换为bytes
return binary_data