简介
Fast-GRPC 旨在帮助开发者更加轻松快捷地使用 Python 开发 gRPC 接口。它的特点包括简化步骤、简单上手、快速开发,同时支持异步和同步代码,以及支持 Middleware,灵感来自FastAPI。
安装
需要python 3.7+- pip install python-fast-grpc
复制代码 快速上手
下面是一个简单的 Fast-GRPC 示例,展示如何创建一个 gRPC 服务- from fast_grpc import BaseSchema, FastGRPC, ServicerContext, method
- app = FastGRPC()
- class HelloRequest(BaseSchema):
- name: str
- class HelloReply(BaseSchema):
- message: str
- class Greeter:
- @method("SayHello", request_model=HelloRequest, response_model=HelloReply)
- async def say_hello(self, request: HelloRequest, context: ServicerContext) -> HelloReply:
- return HelloReply(message=f"Greeter SayHello {request.name}")
- app.add_service(Greeter) # 添加Greeter服务
- # 启动 gRPC 服务。无需手动编写 proto 文件,Fast-GRPC 会根据你的 Python 代码自动生成 proto 文件,并编译为 Python gRPC 代码,最后启动 gRPC 服务
- 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 的使用习惯。
接下来,我们通过一个客户端调用来演示效果:- import grpc
- import greeter_pb2 as pb2
- import greeter_pb2_grpc as pb2_grpc
- channel = grpc.insecure_channel("127.0.0.1:50051")
- stub = pb2_grpc.GreeterStub(channel)
- response = stub.SayHello(pb2.HelloRequest(name="fastGRPC"))
- print("Greeter client received: ", response)
复制代码 相关链接
Fast-GRPC GitHub 仓库
下一步计划
目前,Fast-GRPC 支持的功能还比较简单,未来将继续改进和完善。如果您有任何建议或意见,请不要犹豫,欢迎提交 issue 或者 PR。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |