Tengo un gancho post-recepción en mi repository git que excute este fabfile.py:
def deploy(): print(cyan('Pulling changes to local server')) with cd('/var/www') local('git pull')
Se ejecuta correctamente, pero muestra el resultado del command local antes de la printing, como este:
remote: From /media/projetos/repositorys/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
Si solo hago ssh en el server y ejecuto fab deploy, funciona normalmente.
Agregue una sys.stdout.flush()
a sys.stdout.flush()
después de print
, de modo que incluso si la salida está completamente almacenada en el búfer (como en un conducto, que es el caso cuando se ejecuta bajo un git hook), se envíe a la secuencia de salida en ese punto, antes de ejecutar otro command.