我正在使用 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 函数在直接通过终端运行时工作正常。
谢谢