将 Fabric 输出重定向到文件

3
我会尽力提供帮助,以下是您需要翻译的内容:

我在脚本中直接使用fabric.api.local。例如:

fabric_test.py

from fabric.api import local

local('echo hello world')
local('ls')

如果我不进行任何io重定向执行它,一切都很好。
$ python fabric_test.py
[localhost] local: echo hello world
hello world
[localhost] local: ls
fabric_test.py  test.log

如果我将它执行并将输出重定向到文件中,则输出的顺序会混乱。为什么?当我在某些cronjob中使用fabric并将输出发送到日志文件时,这个问题真的很烦人。

$ python fabric_test.py > test.log
$ cat test.log
hello world
fabric_test.py
test.log
[localhost] local: echo hello world
[localhost] local: ls
1个回答

2
这是因为,Fabric实际上将您指定的任务作为一个单独的子进程执行。因此,子进程的输出并不是Fabric文件的输出。这不是一个新问题,并且已经在之前讨论过,请查看以了解解决方法。

谢谢你帮我理解发生了什么。最终,我在执行脚本时添加了“-u”参数,以强制刷新标准输出。 - Ryan Ye
@RyanYe 你是指 -u USER, --user=USER 连接远程主机时使用的用户名 吗? - Antony Hatchkins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接