我有一个从 Java ProcessBuilder 线程开始的 Python 服务器。Java 程序应等待服务器准备就绪后再继续。当服务器准备好时,它会输出一条“服务器就绪”消息,我假设它是由 Process 对象的 InputStream 接收的。
START_SERVER_COMMAND = TAGGERFLOW_HOME + "server.py";
server = new ProcessBuilder().inheritIO().command("python", START_SERVER_COMMAND, "" + portNum,
config.featOrderName(), config.childOrderName(), "" + maxBeta).start();
System.out.println("Hypertagger server started");
LOGGER.log(Level.INFO, "Hypertagger server started");
String line = null;
while(line == null) {
line = new BufferedReader(new InputStreamReader(server.getInputStream())).readLine();
if(line == null)
Thread.sleep(5000);
}
System.out.println("Exit loop");
但是,line始终为空,因此 Java 永远不会退出循环。这很可能表明我对 InputStream 接收“服务器就绪”消息的假设是错误的,但我不知道为什么会这样。
我正在寻找一种方法来获取“服务器就绪”消息,或者寻找一种更好的方法来检测服务器何时就绪。任何帮助,将不胜感激。
编辑
在此之前,我尝试在循环之前初始化 BufferedReader。它有相同的行为。
PIPIONE
相关分类