pycorenlp无限打印INFO:root:Waiting until the server is available如何解决
排查步骤
- 确认CoreNLP Java服务状态
该日志的本质是pycorenlp无法连通目标CoreNLP服务,首先检查对应服务是否已成功启动。默认CoreNLP服务端口为9000,可直接访问http://localhost:9000验证,若无法打开页面说明服务未正常启动。 - 核对服务连接参数
检查代码中初始化StanfordCoreNLP对象时传入的服务地址是否和实际启动的CoreNLP服务地址、端口完全一致,若服务部署在其他机器或修改了默认端口,需要同步更新代码中的连接地址。 - 验证网络连通性
若连接的是远程CoreNLP服务,检查本地防火墙是否允许访问对应端口,远程服务器的安全组、防火墙是否放开了CoreNLP服务端口,可通过curl http://<服务地址>:<端口>命令测试连通性。 - 检查Java版本兼容性
最新版CoreNLP要求Java 11及以上运行环境,可执行java -version查看当前Java版本,版本过低会导致CoreNLP服务启动失败。
修复方案
- 服务未启动的处理
先进入CoreNLP的解压目录,执行启动命令:java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9000 -timeout 15000,等待控制台输出服务启动成功的日志后,再运行pycorenlp相关代码。 - 连接参数错误的处理
把代码中的连接地址修改为CoreNLP服务实际的地址与端口即可,示例:corenlp = StanfordCoreNLP('http://192.168.1.100:9000') - 网络不通的处理
放开本地和远程服务器对应端口的防火墙规则,确保无IP访问限制,直到curl命令可以正常获取服务返回结果。 - 避免无限循环的处理
若要从代码层面终止无意义循环,可修改pycorenlp源码的重试逻辑,增加最大重试次数限制,也可以替换为官方维护的stanza库中的CoreNLP接口,替代不再维护的pycorenlp。
内容的提问来源于stack exchange,提问作者user11915177
相关产品推荐
相关产品推荐

