python模块之 - grpc


# gRPC 的安装:
# $ pip install grpcio
# 安装 ProtoBuf 相关的 python 依赖库:
# $ pip install protobuf
# 安装 python grpc 的 protobuf 编译工具:
# $ pip install grpcio-tools

python -m grpc_tools.protoc --python_out=. --grpc_python_out=. *.proto
syntax = "proto3";

package proto;

//
service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

message HelloRequest {
  string name = 2;
}

message HelloReply {
  string message = 1;
}
proto

 

golang grpc默认50001端口

 

 client
import grpc
import user_pb2
import user_pb2_grpc


def run():
    # 请求的ip和端口地址
    with grpc.insecure_channel('localhost:50001') as channel:
        stub = user_pb2_grpc.GreeterStub(channel)
        response = stub.SayHello(user_pb2.HelloRequest(name="asdasdasdasdasd"))
    print("Greeter client received: " + response.message)


if __name__ == '__main__':
    run()
server
from concurrent import futures
import time
import grpc

import user_pb2
import user_pb2_grpc

_ONE_DAY_IN_SECONDS = 60 * 60 * 24


# Greeter:服务名;SayHello:方法名
class Greeter(user_pb2_grpc.GreeterServicer):

    def SayHello(self, request, context):
        # 请求内容在request中,取数据:request.name
        return user_pb2.HelloReply(message='Hello, %s!' % request.name)


def serve():
    # max_workers:最大连接数
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    user_pb2_grpc.add_GreeterServicer_to_server(Greeter(), server)
    # 服务启动的ip和端口
    server.add_insecure_port('[::]:50001')
    server.start()
    try:
        while True:
            time.sleep(_ONE_DAY_IN_SECONDS)
    except KeyboardInterrupt:
        server.stop(0)


if __name__ == '__main__':
    serve()

可以和 golang 服务端,客户端  随意配合

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM