# 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; }
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 服务端,客户端 随意配合