如何从父进程和子进程python脚本获取控制台上的日志实时流?

问题描述 投票:0回答:1

在我们的应用程序中,Java模块将触发python脚本(比如说A)。这个python脚本将通过子进程python包反过来触发另一个python脚本(比如说B)。当脚本执行时,日志不会实时打印在控制台上。当两个脚本都结束时,两个脚本中的所有日志都会在控制台上一次打印。下面是从脚本A触发脚本B的代码片段。在脚本执行时,需要对控制台上的日志实时流进行哪些修改?

cmd = ['python', 'provision-cluster.py', updatedClusterConfigJsonFile]
ret_value = subprocess.Popen(cmd).wait()
if ret_value != 0:
    print("Execution of provision-cluster.py failed !!!")
else:
    print("Cluster provisioned successfully!!!")
python python-2.7 subprocess
1个回答
0
投票

我试过复制一些。只是为了确保我理解正确:

  1. 你的第一个python脚本被调用
  2. 你的第二个python脚本被调用(通过你提供的代码片段)
  3. 一旦两个脚本都运行完整的课程,所有信息将同时打印到控制台

在第二个脚本运行时,您宁愿让它“实时”提供信息吗?

您的“外部”脚本使用.wait()方法调用内部脚本(cmd)。这导致它等待内部脚本在它继续之前终止,这可能是你想要的。

我认为更有趣的一点是看内部脚本以及是否等待它?也许你的Java模块将所有stdout保存到一个缓冲区,一旦你的内部脚本完成它就会打印出来?

我可能只是找不到它但是你提供的代码我很遗憾找不到解决方案。

python docs on subprocess可能对你有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.