我正在使用fabric 在远程机器上运行ssh 任务。
输出不会自动刷新,有没有强制自动刷新的方法?
(文档似乎没有提到这个主题)
在使用 Fabricputs()
输出一些文本时,可以使用flush=True
参数来避免缓冲:
puts('Doing stuff', flush=True)
或者,如果您担心远程命令的输出,您可能希望在运行命令后刷新标准输出:
run('some command')
sys.stdout.flush()
请注意,在命令本身执行期间(虽然不确定)或在远程命令本身中,Fabric 中仍可能发生一些缓冲。在这种情况下,通过 Fabric 或直接通过 SSH 运行它时,您应该会看到相同的行为。
我有点偏见,因为我在那里工作,但我们想出了一个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