python简单集成grpc

本文介绍了如何简化Python中gRPC的集成过程,通过定义通用的Protocol文件减少接口定义和代码生成的复杂度。实现思路包括定义通用Protocol,将请求和响应序列化为字节数据进行网络传输。文中详细展示了安装依赖、编写服务端和客户端代码的过程,并提供了运行示例。最后指出,虽然这种做法可能增加网络开销,但不失为一种简化集成的尝试。
摘要由CSDN通过智能技术生成

python简单集成grpc

grpc简单介绍

grpc是Google开发的高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于Protobuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。–摘自互联网

grpc集成的难点

标准的grpc集成流程:

  1. 引入grpc相关库
  2. 定义接口的Protocol文件
  3. 使用工具生成相应开发语言的服务端和客户端代码
  4. 服务端编写接口实现
  5. 客户端使用

由于对每个接口都需要定义Protocol文件,和生成相关代码。 对于对Protobuf(Protocol Buffers)序列化协的开发而言,无疑增加了复杂度。那我们是否可以通过某种方法来减少Protocol文件定义和相关代码的生成? 答案是肯定的。 这就是我们接下来要介绍的。

实现思路

  • 定义通用的Protocol文件, 用于描述接口的请求和响应参数
  • 通用的Protocol文件,请求和响应参数 定义字节类型
  • 请求和响应序列化为字节数据进行网络传递

python代码简单实现

安装依赖库

pip install grpcio
pip install protobuf
pip install grpcio_tools

通用Protocol

common.proto

syntax = "proto3";

// 定义通用的 Grpc 服务
service CommonService {
    // 处理请求
    rpc handle ( Request ) returns ( Response ) {}
}

// 定义通用的 Grpc 请求体
message Request {
    int32 serialize = 1;
    bytes request = 2;
}

// 定义通用的 Grpc 响应体
message Response {
    bytes response = 1;
}

使用grpc_tools生成common.proto服务端和客户端代码

python -m grpc_tools.protoc -I ./ --python_out=./ --grpc_python_out=./ common.proto

生成了2个文件:

  • common_pb2.py
  • common_pb2_grpc.py

服务端和客户端公用模块core.py

import grpc
import common_pb2
import common_pb2_grpc
import pickle as pk
import inspect

class GrpcRequest:
	def __init__(self, name, request):
		self.name = name
		self.request = request
		
		
				
def GrpcService(host='localhost', port=10240):
	def decorator(fn):
		def wrapper(*args, **kwargs):
			# 连接 rpc 服务器
			channel = grpc.insecure_channel('{}:{}'.format(host, port))
			# 调用 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值