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秒かかりますが、これは驚くほど長いものです。なぜそれは遅いかもしれませんし、サーバー接続を確認する強力な方法がありますか?
「WaitForReady」RPCは、通常、接続状態を手動で観察するよりも優先する必要があることに注意してください。私はPythonでそのAPIを発見していない。 –