[PYTHON] 5 Minuten gRPC-Tutorial

Überblick

Ich habe zusammengefasst, was ich über gRPC recherchiert habe. Ich habe auch versucht, das offizielle Tutorial auf Python auszuführen.

Ich werde es aktualisieren, sobald ich es berühre.

Was ist gRPC?

gRPC ist ein Open-Source-Framework für Remote Procedure Call. gRPC macht die Kommunikation zwischen Client / Server-Anwendungen transparent und einfach zu erstellen.

Es gibt. Ich bin neugierig, schauen Sie sich also die [offizielle Website] an (https://grpc.io/docs/guides/).

Was mich mit gRPC glücklich macht

Mit gRPC können Sie Remote-Serverfunktionen wie lokal aufrufen, was das Erstellen verteilter Dienste und Anwendungen erleichtert. Da Sie in einer Sprache schreiben können, die gPRC unterstützt, können Sie problemlos einen gPRC-Server in Java, einen Client in Python usw. schreiben. Die Komplexität der Kommunikation zwischen verschiedenen Sprachen wird hier von gPRC behandelt.

Informationen zum Protokollpuffer

Standardmäßig verwendet gPRC einen Protokollpuffer (Sie können auch ein Format wie json verwenden). Der Protokollpuffer wird in einer .proto-Datei definiert, sein Format ist jedoch sehr leicht (3 bis 10 Mal leichter) und schneller (20 bis 100 Mal schneller) als bei XML-Dateien. Wenn Sie die vom Dienst verwendete Methode und die Struktur für den Datenaustausch in dieser .proto-Datei definieren, kann die Serialisierung und Deserialisierung einfach über den Proto-Compiler erfolgen. Infolgedessen werden Accessoren (Klassen) definiert, die in jeder Sprache übertragene Strukturen verarbeiten, und Setter und Getter, die Struktureigenschaften usw. festlegen können, werden ebenfalls ohne Berechtigung erstellt. Durch das Definieren einer .proto-Datei können Sie daher problemlos Dienste auch zwischen Sprachen erstellen und Unterschiede wie die Serialisierung berücksichtigen. Beeindruckend! !!

Versuchen wir also das Tutorial in Python und C ++.

gRPC-Tutorial

Python Pip installieren, was Sie brauchen.

pip install grpcio grpcio-tools

Zu diesem Zeitpunkt ist die neueste Version möglicherweise nicht enthalten. Überprüfen Sie daher die Version von grpcio ordnungsgemäß!

Klonen Sie das erforderliche Repository.

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

Öffnen Sie zwei Klemmen und verwenden Sie eine

python greeter_server.py

Auf der anderen Seite

python greeter_client.py

Ich werde versuchen. Auf der Client-Seite

Greeter client received: Hello, you!

Wenn es herauskommt, ist es ein Erfolg! !!

Fügen wir dem gRPC-Dienst außerdem eine weitere Methode hinzu.

Fügen Sie hier zusätzlich zum ursprünglichen `SayHello `` `SayHello Again``` hinzu.

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;
}

Aktualisieren Sie den Dienst.

Bei examples / python / helloworld,

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

Und Aktualisieren Sie greeter_server.py und 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)

Wenn Sie das oben genannte tun können,

Öffnen Sie zwei Klemmen und verwenden Sie eine

python greeter_server.py

Auf der anderen Seite

python greeter_client.py

Ausführen.

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

Es sollte so herauskommen!

Dieses Mal habe ich gRPC untersucht Ich hoffe, Sie haben das offizielle Tutorial ausgeführt, um ein wenig besseres Verständnis für .proto-Dateien und mehr zu erhalten. Ich werde es weiter aktualisieren, sobald ich verschiedene Dinge ausprobiere oder es in einen anderen Artikel schreibe! !!

Diesmal hier.

Ende.

Recommended Posts

5 Minuten gRPC-Tutorial
PyODE Tutorial 2
Python-Tutorial
PyODE Tutorial 1
TensorFlow Tutorial Tutorial