如何使面料冲洗它的输出?

时间:2013-09-09 12:50:41

标签: fabric

我正在使用fabric在远程计算机上运行ssh任务。

输出没有自动刷新,是否有强制自动刷新的方法?

(文档似乎没有提到这个主题)

2 个答案:

答案 0 :(得分:1)

使用Fabric的puts()输出一些文本时,可以使用flush=True参数来避免缓冲:

puts('Doing stuff', flush=True)

或者如果您担心远程命令的输出,您可能希望在运行命令后刷新标准输出:

run('some command')
sys.stdout.flush()

请注意,在执行命令本身期间(虽然不确定),或者在远程命令本身内,仍可能在Fabric中发生某些缓冲。在这种情况下,您应该在通过Fabric运行它或直接通过SSH时看到相同的行为。

答案 1 :(得分:0)

我有点偏颇,因为我在那里工作,但我们在我的工作场所为我们提出了一个名为gusset的面料的日志工具。它的名称为gusset,它允许您使用结构脚本进行可配置的日志记录

from fabric.api import run
from gusset.output import with_output

@with_output(verbosity=1)
def foo():
    run("ls")


In [9]: with settings(host_string="mybox", user="myuser"):
   ...:     foo()
   ...:     
[mybox] run: ls