python使用grpc入门

安装 protobuf,grpcio,grpcio-tools

pip install protobuf
pip install grpcio
pip install grpcio-tools

hello.proto

syntax = "proto3";

package proto;

// 请求消息
message HelloRequest {
  string name = 1;
}

// 响应消息
message HelloReply {
  string message = 1;
}

// 服务定义
service Greeter {
  // rpc 方法
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

proto生成python代码,在proto的同级目录

python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. hello.proto

server.py

from concurrent import futures
import grpc
import hello_pb2
import hello_pb2_grpc

class Greeter(hello_pb2_grpc.GreeterServicer):
    def SayHello(self, request, context):
        return hello_pb2.HelloReply(message=f'Hello {request.name}')

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

if __name__ == '__main__':
    serve()

client.py

import grpc
import hello_pb2
import hello_pb2_grpc

def run():
    channel = grpc.insecure_channel('localhost:50051')
    stub = hello_pb2_grpc.GreeterStub(channel)
    response = stub.SayHello(hello_pb2.HelloRequest(name='World'))
    print("Greeter client received: " + response.message)

if __name__ == '__main__':
    run()

先启动server。再启动client,测试是否正常

其他

报错from google.protobuf import runtime_version as _runtime_version ImportError: cannot import name 'runtime_version' from 'google.protobuf'

pip install --upgrade protobuf
posted @   朝阳1  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示