2017-12-19 8 views
0

私のプロジェクトでは、Dockerコンテナ内の2つのマイクロサービス間でgrpc通信があります。クライアントがローカルで、サーバーがコンテナーにある場合、クライアントはサーバーに要求を出し、応答を受け取ります。クライアントを1つのコンテナに入れ、別のコンテナに入れると、クライアントは要求を行い、応答もステータスも受信しません。ドッカーコンテナ内のgrpcクライアントは応答もステータスも受け取りません

これは私のクライアントです:

class RoomClient: 
    def __init__(self, host='', port=50051): 
     conn_str = '{}:{}'.format(host, port) 
     self.channel = grpc.insecure_channel(conn_str) 
     self.stub = booking_pb2_grpc.BookingStub(self.channel) 

    # Login call this method 
    def rpc_run_get_all(self, request): 
     number = booking_pb2.AddRequest(value=request) 
     response = self.stub.sendAll(number) 
     return response 

私のサーバー:

class BookingServicer(booking_pb2_grpc.BookingServicer): 

    def sendAll(self, request, context): 
     response = booking_pb2.AddReply() 
     #response.value = send_all(request.value) 
     print ("chegou") 
     response.value = str(json_util.dumps({'response': "hello"})) 
     return response 


def serve(): 

    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) 

    booking_pb2_grpc.add_BookingServicer_to_server(BookingServicer(), server) 

    print('Starting server. Listening on port 50051.') 
    server.add_insecure_port('[::]:50051') 
    server.start() 

    try: 
     while True: 
      time.sleep(86400) 
    except KeyboardInterrupt: 
     server.stop(0) 

if __name__ == '__main__': 
    serve() 

答えて

2

ご自分のサーバのホスト名またはIPが欠落しています。両方のコンテナが同じホスト上で実行されているか、同じネットワークに配置されており、検出のためにDNSレコードを使用している場合は、docker inspect <containerid>を使用してコンテナIPを取得します。

これはGRPCの下のレイヤーなので、ネットワークのデバッグステップがあればここで役立ちます。

+0

リピートしてくれてありがとう!私はすでに解決しています。私はドッカーネットワークを使い、このネットワーク上で2つのコンテナを走らせました。ホストアドレスには、サーバーであったコンテナの名前を入れます。 –

関連する問題