【问题标题】:Running mvn in background from Python Popen and thread function从 Python Popen 和线程函数在后台运行 mvn
【发布时间】:2017-07-05 23:13:38
【问题描述】:

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

谢谢

【问题讨论】:

    标签: python multithreading popen py4j


    【解决方案1】:

    我找到了问题的答案。

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

    希望有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-21
      • 2016-01-13
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 2022-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多