参考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__「: 実行()
第五に、営業成績