public boolean predict( String modelName, DefaultFullHttpRequest req, HttpPostRequestEncoder requestEncoder) throws InterruptedException, HttpPostRequestEncoder.ErrorDataEncoderException, IOException { Channel channel = connect(bootstrap, inferencePort); req.setUri("/predictions/" + URLEncoder.encode(modelName, StandardCharsets.UTF_8.name())); channel.writeAndFlush(requestEncoder.finalizeRequest()); if (requestEncoder.isChunked()) { channel.writeAndFlush(requestEncoder).sync(); } channel.closeFuture().sync(); int statusCode = handler.getStatusCode(); String ret = handler.getContent(); if (statusCode == 200) { logger.info("predict: {} success.", modelName); logger.trace(ret); return true; } logger.warn("predict: {} failed: {}", modelName, ret); return false; }