在docker集装箱grpc客户端收到既不响应也不状态

在我的项目中,我在Docker容器中的两个微服务之间有一个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() 

您错过了服务器的主机名或IP。 如果两个容器在同一个主机上运行,​​或者将它们放在同一个networking中并使用dnslogging进行发现,请使用docker inspect <containerid>来获取容器IP。

这是GRPC下面的图层,所以任何networkingdebugging步骤都会帮助你。