Fabric脚本执行未结束
这是我的问题:
我有一个用Python写的构建脚本,它执行几个命令来生成一个.air包。这部分工作做得很好,但之后我想把这个文件部署到服务器上。
为此,我使用了一个fabric脚本。以下是相关的代码:
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
我找到了一个解决办法!可能不是最好的,但一开始这样做也可以。
我把密码放在了 fabfile.py
文件中的 env.password
变量里。
我发现如果不这样做,构建服务器会“显示”一个提示,这样就会停下来等密码,导致执行无法继续!
谢谢你的回答,Cinquo。你的帮助让我收到了fabric的输出 =D
2
你可以使用subprocess模块来了解发生了什么。
import subprocess
pipe = subprocess.Popen(command, stdout = subprocess.PIPE,
stderr = subprocess.PIPE, shell = True)
stdout, stderr = pipe.communicate()
pipexit = pipe.returncode
然后你可能需要设置一个超时时间,为此你可以使用pipe.poll()这个调用,它可以检查子进程是否已经完成。如果在一定时间后它还没有完成,你可以选择结束它。
1
值得一提的是,你可以直接导入fabric这个库,然后让它执行你需要的任务,所以其实你不一定要使用子进程。毕竟这只是Python,完全可以当作一个库来使用:http://docs.fabfile.org/en/1.1.1/usage/library.html