Fast-GRPC: 用python轻松开发grpc接口

莱莱  金牌会员 | 2023-5-19 00:41:35 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 914|帖子 914|积分 2742

简介

Fast-GRPC 框架旨在为开发者提供更轻松快捷的 Python gRPC 接口开发方式,受到 FastAPI 的启发,用更human的方式编写 gRPC 接口(减少犯错),通过使用 Python schema 直接定义 gRPC 接口,然后自动生成gRPC proto,从而省去了在 proto 文件中再次定义接口的繁琐工作;框架简化了 Python gRPC 开发流程,同时提供与 FastAPI 类似的接口编写风格,接口可以支持同步和异步写法,并且还可以使用 Middleware(可以代替gRPC拦截器,自带的拦截器感觉不太好用)。个人认为,在 Python 微服务实践中,结合 FastAPI 和 gRPC 并利用流行的微服务基础设施(比如微软dapr),将是一个不错的选择。
安装

需要python 3.7+
  1. pip install python-fast-grpc
复制代码
快速上手

下面是一个简单的 Fast-GRPC 示例,展示如何创建一个 gRPC 服务
  1. from fast_grpc import BaseSchema, FastGRPC, ServicerContext, method
  2. app = FastGRPC()
  3. class HelloRequest(BaseSchema):
  4.     name: str
  5. class HelloReply(BaseSchema):
  6.     message: str
  7. class Greeter:
  8.     @method("SayHello", request_model=HelloRequest, response_model=HelloReply)
  9.     async def say_hello(self, request: HelloRequest, context: ServicerContext) -> HelloReply:
  10.         return HelloReply(message=f"Greeter SayHello {request.name}")
  11. app.add_service(Greeter)  # 添加Greeter服务
  12. # 启动 gRPC 服务。无需手动编写 proto 文件,Fast-GRPC 会根据你的 Python 代码自动生成 proto 文件,并编译为 Python gRPC 代码,最后启动 gRPC 服务
  13. app.run()
复制代码
在上面的示例中,我们首先使用 FastGRPC 创建了一个 gRPC 应用。接下来,定义了一个 gRPC 服务 Greeter,使用 method 装饰器标记了一个 RPC 方法 say_hello。method 接受三个参数:RPC 方法名、请求模型 HelloRequest 和响应模型 HelloReply。say_hello 方法可以支持同步和异步代码,对于同步代码,会使用线程来模拟异步执行。
最后,我们将 Greeter 服务添加到 gRPC 应用中,并通过 run 方法启动 gRPC 服务器。Fast-GRPC 会根据添加的 Greeter 服务的接口定义自动生成 .proto 文件和 Python gRPC 代码,简化了 Python gRPC 的开发步骤,更符合 Python 的使用习惯。
接下来,我们通过一个客户端调用来演示效果:
  1. import grpc
  2. import greeter_pb2 as pb2
  3. import greeter_pb2_grpc as pb2_grpc
  4. channel = grpc.insecure_channel("127.0.0.1:50051")
  5. stub = pb2_grpc.GreeterStub(channel)
  6. response = stub.SayHello(pb2.HelloRequest(name="fastGRPC"))
  7. print("Greeter client received: ", response)
复制代码
相关链接

Fast-GRPC GitHub 仓库
下一步计划

目前,Fast-GRPC 支持的功能还比较简单,未来将继续改进和完善。如果您有任何建议或意见,请不要犹豫,欢迎提交 issue 或者 PR。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莱莱

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表