这是我的问题:
我有一个Python构建脚本,它执行几个命令来生成.air包。这部分工作正确完成但在此之后,我想将此文件部署到服务器。 我在ordrer中使用了一个结构脚本来做到这一点。以下是这些行:
if os.system(os.environ["FAB"] + "\\fab.exe " + version + " deploy") != 0:
print("fab error")
sys.exit(-1)
当我运行此脚本时,如标题中所述,fab.exe执行未完成。如果我在cmd.exe窗口中单独运行它,没有问题,这意味着我的SSH配置似乎没问题。
我尝试打印文件中的输出和错误但是当我杀死fab任务时,没有打印任何内容=( 有人对这个问题有所了解吗?是否可能执行构建脚本具有除我的Windows帐户之外的其他权限?
提前谢谢!
答案 0 :(得分:2)
您可以使用子流程模块了解会发生什么
import subprocess
pipe = subprocess.Popen(command, stdout = subprocess.PIPE,
stderr = subprocess.PIPE, shell = True)
stdout, stderr = pipe.communicate()
pipexit = pipe.returncode
然后你可能需要超时,为此你可以使用pipe.poll()调用,它允许检查子进程是否完成(然后如果在一段时间后没有完成你可能决定杀死它)。
答案 1 :(得分:0)
我找到了解决方案!也许不是最好的,但在第一次,它会没事的。
我在env.password
文件的fabfile.py
变量的代码中添加了密码。
我发现没有它,构建服务器“显示”“提示”并停止执行等待密码!
感谢您的回答Cinquo。它帮我收到了面料的输出= D
答案 2 :(得分:0)
请注意,您可以直接导入结构本身并告诉它运行它的任务,所以实际上您不必进行子处理。毕竟它只是python,可以用作库:http://docs.fabfile.org/en/1.1.1/usage/library.html