0

我正在使用 Py4j 模块实现网关服务器自动化。每次用户调用该功能时都需要启动网关服务器。我面临的问题是我无法在后台运行该功能。这是代码:

def mvn():
logger = open("log.txt", 'w')
logger.seek(0)
thread1 = Thread(target=Popen, args=("./runJVM.sh"),kwargs=
                {"stdout":logger})
thread1.daemon = True
thread1.start()
# stdout, error = proc.communicate()
# logger.write(stdout)
logger.close()

我在这里面临两个问题 1)如果我将 kwargs 标准输出指定为记录器(用于检查输出的日志文件),它会抛出一个错误,指出标准输出指定了多个参数。

2)如果我不指定 stdout 选项,线程的输出将显示在我不想要的 ipython 终端上。

我想要的只是在后台调用服务器,以便其他功能可以访问 java 网关服务器并访问可以从 ipython 使用的方法。

您可以放心地假设 mvn 函数在直接通过终端运行时工作正常。

谢谢

4

1 回答 1

0

我找到了问题的答案。

我创建了一个线程,它将采用 Popen 命令,将一个小的 shell 脚本作为输入并将 stdout 参数作为 kwargs 传递,以便不显示输出。服务器被调用并且可以从其他函数中使用。

希望有帮助

于 2017-07-07T17:19:58.677 回答