【发布时间】:2020-07-23 09:02:02
【问题描述】:
我正在使用 py4j 进行 python 和 java 之间的通信。
目前,java进程和python在同一个服务器。
我想知道是否可以将这两个分离到不同的服务器中,而无需对当前使用 Py4J 的方法进行太大更改。
如果可能,有人可以帮助我直接访问相关文档或显示代码 sn-ps 以了解如何执行此操作吗?
【问题讨论】:
我正在使用 py4j 进行 python 和 java 之间的通信。
目前,java进程和python在同一个服务器。
我想知道是否可以将这两个分离到不同的服务器中,而无需对当前使用 Py4J 的方法进行太大更改。
如果可能,有人可以帮助我直接访问相关文档或显示代码 sn-ps 以了解如何执行此操作吗?
【问题讨论】:
我不知道你还在寻找答案,但有人可能会觉得这很有帮助:
当您通过调用构造函数创建网关时,
GatewayServer gatewayServer = new GatewayServer(new YourEntryPoint(), gatewayPort);
那么您的网关将默认 java IP 地址设置为127.0.0.1 (localhost)。
将 IP 地址设置为localhost 的网关将仅响应来自本地主机(同一台机器)的请求。
您可以使用 IP 0.0.0.0 使其使用您机器的所有 IP 或指定您机器的一个 IP。
指定 Java IP 的一种方法是使用 GatewayServer.GatewayServerBuilder。
GatewayServer.GatewayServerBuilder builder = new GatewayServer.GatewayServerBuilder();
GatewayServer gatewayServer = builder
.entryPoint(new YourEntryPoint())
.javaPort(gatewayPort)
.javaAddress(InetAddress.getByName("0.0.0.0")) // .getByName throws UnknownHostException
.build();
【讨论】: