[PYTHON] Tutoriel gRPC de 5 minutes

Aperçu

J'ai résumé ce que j'ai recherché sur gRPC. J'ai également essayé d'exécuter le tutoriel officiel sur python.

Je le mettrai à jour dès que je le toucherai.

Qu'est-ce que gRPC

gRPC est un framework sophistiqué d'appel de procédure à distance open source. gRPC rend la communication entre les applications client / serveur transparente et facile à construire.

Il y a. Je suis curieux, alors jetez un œil au Site officiel.

Ce qui me rend heureux avec gRPC

Avec gRPC, vous pouvez appeler des fonctions de serveur distant comme si elles étaient locales, ce qui facilite la création de services et d'applications distribués. Comme vous pouvez écrire dans un langage prenant en charge gPRC, vous pouvez facilement écrire un serveur gPRC en Java, un client en python, etc. La complexité de la communication entre les différentes langues est ici gérée par gPRC.

À propos du tampon de protocole

Par défaut, gPRC utilise un tampon de protocole (vous pouvez également utiliser un format tel que json). Protocol Buffer est défini dans un fichier .proto, mais son format est très léger (3 à 10 fois plus léger) et plus rapide (20 à 100 fois plus rapide) que les fichiers XML. Si vous définissez la méthode utilisée par le service et la structure utilisée pour échanger des données dans ce fichier .proto, la sérialisation et la désérialisation peuvent être facilement effectuées via le compilateur proto. En conséquence, des accesseurs (classes) qui gèrent les structures transférées dans chaque langage sont définis, et des setters et des getters qui peuvent définir des propriétés de structure, etc. sont également créés sans autorisation. Par conséquent, en définissant un fichier .proto, vous pouvez facilement créer des services même entre les langues, et il absorbe également les différences telles que la sérialisation. Hou la la! !!

Alors, essayons le tutoriel en Python et C ++.

Tutoriel gRPC

Python Pip installez ce dont vous avez besoin.

pip install grpcio grpcio-tools

Pour le moment, la dernière version peut ne pas être incluse, alors assurez-vous de vérifier correctement la version de grpcio!

Clonez le référentiel requis.

git clone -b v1.28.1 https://github.com/grpc/grpc && cd grpc/examples/python/helloworld

Ouvrez deux terminaux et utilisez-en un

python greeter_server.py

D'un autre côté

python greeter_client.py

Je vais essayer. Côté client

Greeter client received: Hello, you!

S'il sort, c'est une réussite! !!

De plus, ajoutons une autre méthode au service gRPC.

Ici, en plus de l'original SayHello```, ajoutez SayHelloAgain```.

examples/protos/helloworld.proto


// The greeting service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
  // Sends another greeting
  rpc SayHelloAgain (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

Mettez à jour le service.

Dans ʻexamples / python / helloworld`,

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

Et Mettez à jour greeter_server.py et greeter_client.py.

greeter_server.py


class Greeter(helloworld_pb2_grpc.GreeterServicer):

  def SayHello(self, request, context):
    return helloworld_pb2.HelloReply(message='Hello, %s!' % request.name)

  def SayHelloAgain(self, request, context):
    return helloworld_pb2.HelloReply(message='Hello again, %s!' % request.name)

greeter_client.py


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

Si vous pouvez faire ce qui précède,

Ouvrez deux terminaux et utilisez-en un

python greeter_server.py

D'un autre côté

python greeter_client.py

Éxécuter.

Greeter client received: Hello, you!
Greeter client received: Hello again, you!

Ça devrait sortir comme ça!

Cette fois, j'ai enquêté sur gRPC J'espère que vous avez exécuté le didacticiel officiel pour mieux comprendre les fichiers .proto et plus encore. Je continuerai à le mettre à jour dès que j'essaierai diverses choses, ou l'écrirai dans un autre article! !!

Cette fois par ici.

fin.

Recommended Posts

Tutoriel gRPC de 5 minutes
Tutoriel PyODE 2
Tutoriel Python
Tutoriel PyODE 1
Tutoriel du didacticiel TensorFlow