在我们的应用程序中,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!!!")
我试过复制一些。只是为了确保我理解正确:
在第二个脚本运行时,您宁愿让它“实时”提供信息吗?
您的“外部”脚本使用.wait()方法调用内部脚本(cmd)。这导致它等待内部脚本在它继续之前终止,这可能是你想要的。
我认为更有趣的一点是看内部脚本以及是否等待它?也许你的Java模块将所有stdout保存到一个缓冲区,一旦你的内部脚本完成它就会打印出来?
我可能只是找不到它但是你提供的代码我很遗憾找不到解决方案。
python docs on subprocess可能对你有所帮助。