Пример использования gRPC:



Рассмотрим простой пример использования gRPC для создания клиент-серверного приложения на Python.



1. Определение сервиса и сообщений в файле example.proto с использованием синтаксиса Protocol Buffers:



syntax = "proto3";



message HelloRequest {

string name = 1;

}



message HelloResponse {

string message = 1;

}



service Greeter {

rpc SayHello (HelloRequest) returns (HelloResponse);

}




2. Генерация кода на основе файла example.proto с помощью компилятора Protocol Buffers:



protoc -I=. --python_out=. --grpc_python_out=. example.proto




3. Создание сервера на Python с использованием gRPC:



import grpc

import example_pb2

import example_pb2_grpc



class GreeterServicer(example_pb2_grpc.GreeterServicer):

def SayHello(self, request, context):

return example_pb2.HelloResponse(message=f"Hello, {request.name}!")



def serve():

server = grpc.server(grpc.insecure_server())

example_pb2_grpc.add_GreeterServicer_to_server(GreeterServicer(), server)

server.add_insecure_port('[::]:50051')

server.start()

server.wait_for_termination()



if name == 'main':

serve()




4. Создание клиента на Python с использованием gRPC:



import grpc

import example_pb2

import example_pb2_grpc



def run():

channel = grpc.insecure_channel('localhost:50051')

stub = example_pb2_grpc.GreeterStub(channel)

response = stub.SayHello(example_pb2.HelloRequest(name='world'))

print