1

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

输出不会自动刷新,有没有强制自动刷新的方法?

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

4

2 回答 2

1

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

puts('Doing stuff', flush=True)

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

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

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

于 2013-09-09T15:32:14.020 回答
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
于 2013-09-11T07:51:11.760 回答