2017-08-18 18 views
0

gRPCクライアントがサーバーの前で起動すると、例外が発生して終了します。私が取り組んでいるアプリケーションは、同時に多数のサーバーとクライアントを起動しますが、実行順序に関しては堅牢でなければなりません。クライアントがサーバーの前で起動する場合は、サーバーが表示されるまで待機する必要があります。GRPCサーバーが利用可能かどうかを知る方法

次のように私は、HelloWorld Pythonクライアント変形例:

done = False 
while not done: 
    try: 
     response = stub.SayHello(helloworld_pb2.HelloRequest(name='you'), timeout=1) 
     print("Greeter client received: " + response.message) 
     done = True 
    except: 
     print('Waiting for server connect...') 
     time.sleep(1) 

を、私は、サーバーの前にクライアントを起動した場合ので、今、私は私のターミナルウィンドウをスクロール「サーバが接続を待っています...」というメッセージを取得予想通り。それから、私はサーバーを起動し、それは結局...接続します。実際、「こんにちは」というメッセージが表示されるまでに約10秒かかりますが、これは驚くほど長いものです。なぜそれは遅いかもしれませんし、サーバー接続を確認する強力な方法がありますか?

答えて

4

ChannelConnectivityを見てください - 私はgoプログラマーですが、Pythonでも同じでなければなりません。私がやっていることは、while/forループを作成し、 "ChannelConnectivity"が "READY"に設定されているときに、接続からクライアントを作成してから続行することです。

+0

「WaitForReady」RPCは、通常、接続状態を手動で観察するよりも優先する必要があることに注意してください。私はPythonでそのAPIを発見していない。 –

関連する問題