我正在使用fabric在远程计算机上运行ssh任务。
输出没有自动刷新,是否有强制自动刷新的方法?
(文档似乎没有提到这个主题)
答案 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