gRPCのPythonの例

参考URL:

https://segmentfault.com/a/1190000015220713?utm_source=channel-hottest

gRPCは、モバイル及びHTTP / 2設計のために、高性能、オープンソースフレームワークと共通RPCあります。現在はC、Java、および移動の言語バージョン、すなわち:. Grpc、grpc-javaの提供、 grpc-行くCバージョンはC、C ++、Node.jsの、Pythonのサポートところ 、ルビー、Objective-Cの、PHP やC#のサポートを。

gRPC HTTP / 2標準設計に基づいて、双方向の流れがもたらすような、制御、ヘッダ圧縮、他のビットに多重化する複数の単一のTCP接続要求を流れます。これらの特性は、モバイルデバイス上の優れたパフォーマンス、より多くの電力とスペース占有します。

まず、hello.proto文件内容

//文件名hello.proto 
構文= "proto3"。

こんにちはパッケージ; 

//グリーティングサービス定義。
サービスグリーターは{ 
  //挨拶送信
  のsayHello(HelloRequest)リターン(HelloReply)RPCを{} 
} 

//ユーザーの名前を含む要求メッセージ。
メッセージHelloRequest { 
  文字列名= 1。
} 

挨拶含む応答メッセージ// 
メッセージHelloReply { 
  文字列メッセージ= 1。
}

 

二、rRPCツールは、コマンドをコンパイル

python -m grpc_tools.protoc -I./ --python_out =。--grpc_python_out =。./hello.proto

2つのファイルを生成します。

  • hello_pb2.py このファイルは、リクエスト(生成含まれているHelloRequest)と応答(HelloReply)クラスを。
  • hello_pb2_grpc.py このファイルは、生成されたクライアント(含まれているGreeterStub)とサーバ(GreeterServicer)クラスを。

それは、既にサーバーとクライアントのコードを生成しているが、我々はまた、マニュアルだけでなく、メソッド呼び出しを実装する必要がありますが。

三、greeter_server.pyファイルの内容

以下からの同時インポート先物
 インポート時間

インポートgrpc 

輸入hello_pb2の
 輸入hello_pb2_grpcの

_ONE_DAY_IN_SECONDS = 60 * 60 * 24 クラス:グリーター(hello_pb2_grpc.GreeterServicer)
    工作函数デフのsayHello(自己、リクエスト、コンテキスト):
         返す hello_pb2.HelloReply(メッセージを= " こんにちは、 !%sの"%のrequest.name)デフサーブ():
    gRPC服务器 
    サーバー= grpc.server(futures.ThreadPoolExecutor(max_workers = 10 ))



    



    hello_pb2_grpc.add_GreeterServicer_to_server(グリーター()、サーバー)
    server.add_insecure_port(' [::]:50051 ' 
    server.start()  スタート()は他のことは行いませんしたときにあなたのコードを実行した場合、あなたをブロックしませんあなたはサイクルを待つ必要があるかもしれません。
    試ししばらく真:
            time.sleep(_ONE_DAY_IN_SECONDS)
    を除くKeyboardInterrupt:
        server.stop(0)

IF  __name__ == ' __main__ ' 
    (サーブ)

 

四、greeter_client.pyファイルの内容

 __future__  インポートprint_function 

輸入grpc 

輸入hello_pb2
 輸入hello_pb2_grpc 


デフ実行():
    チャネル = grpc.insecure_channel(' localhostを:50051 ' 
    スタブ = hello_pb2_grpc.GreeterStub(チャネル)
    応答 = stub.SayHello(hello_pb2.HelloRequest(名前は= ' グッドスピード' ))
     プリント" グリータークライアントは受け取った:" + response.message)


の場合 __name__ == " __main__
    実行()

 

第五に、営業成績

おすすめ

転載: www.cnblogs.com/aguncn/p/11520331.html