Fabric执行命令后显示print

时间:2014-01-31 16:50:56

标签: python git fabric

我的git bare repo上有一个post-receive hook,它执行这个fabfile.py:

def deploy():
    print(cyan('Pulling changes to local server'))

    with cd('/var/www')
        local('git pull')

它执行正常,但它在打印之前显示本地命令的输出,如下所示:

remote: From /media/projetos/repositorios/test
remote:    b057a4b..02d85b3  master     -> origin/master
remote: Updating b057a4b..02d85b3
remote: Fast-forward
remote:  .../test/template/catalog/product/list.phtml     | 98 +++++++++++-----------
remote:  1 file changed, 47 insertions(+), 51 deletions(-)
remote: Pulling changes to local server

如果我只是在服务器上运行并运行fab deploy,它就能正常工作。

1 个答案:

答案 0 :(得分:1)

sys.stdout.flush()之后添加print调用,这样即使输出完全缓冲(因为它在管道上,在git挂钩下运行时也是如此),它会被发送在运行另一个命令之前,在该点输出流。