Fabric脚本执行没有完成

时间:2011-07-04 15:57:48

标签: python fabric

这是我的问题:

我有一个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帐户之外的其他权限?

提前谢谢!

3 个答案:

答案 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