python实现GRPC

gRPC是Google开发的一种高性能、开源的远程过程调用(RPC)框架,它支持多种编程语言,包括Python。使用gRPC可以轻松地构建分布式系统,使得不同服务之间的通信更加简单、高效。

下面是一个简单的Python实现gRPC的demo:

  1. 首先,你需要安装gRPC库。你可以使用pip命令来安装:
pip install grpcio

  1. 定义一个.proto文件,该文件用于定义服务的接口和消息类型。比如,我们创建一个名为helloworld.proto的文件,内容如下:
syntax = "proto3";

package helloworld;

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloResponse) {}
}

message HelloRequest {
  string name = 1;
}

message HelloResponse {
  string message = 1;
}

  1. 使用protoc命令来生成Python代码。首先,你需要安装protobuf库:
pip install protobuf

然后,在终端中运行以下命令:

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

这将生成一个名为helloworld_pb2.py的文件和一个名为helloworld_pb2_grpc.py的文件。前者包含了消息类型的定义,后者包含了gRPC服务的定义。

  1. 实现服务逻辑。在同一个目录下,创建一个名为greeter_server.py的文件,内容如下:
from concurrent import futures
import grpc
import helloworld_pb2
import helloworld_pb2_grpc

class Greeter(helloworld_pb2_grpc.GreeterServicer):
    def SayHello(self, request, context):
        message = f"Hello, {request.name}!"
        return helloworld_pb2.HelloResponse(message=message)

def serve():
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    helloworld_pb2_grpc.add_GreeterServicer_to_server(Greeter(), server)
    server.add_insecure_port("[::]:50051")
    server.start()
    server.wait_for_termination()

if __name__ == "__main__":
    serve()

  1. 创建一个名为greeter_client.py的文件,内容如下:
import grpc
import helloworld_pb2
import helloworld_pb2_grpc

def run():
    channel = grpc.insecure_channel("localhost:50051")
    stub = helloworld_pb2_grpc.GreeterStub(channel)
    response = stub.SayHello(helloworld_pb2.HelloRequest(name="Alice"))
    print("Greeter client received: " + response.message)

if __name__ == "__main__":
    run()

  1. 在终端中分别运行greeter_server.pygreeter_client.py来启动gRPC服务和发送请求。你将看到客户端收到了服务端发送的消息。

这就是一个简单的Python实现gRPC的demo。你可以根据自己的需求定制更复杂的服务和消息类型。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guzhoumingyue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值