将Fabric输出重定向到文件

时间:2014-10-24 08:33:46

标签: python fabric

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

fabric_test.py

from fabric.api import local

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

如果我在没有任何重定向的情况下执行它,一切都很好

$ python fabric_test.py
[localhost] local: echo hello world
hello world
[localhost] local: ls
fabric_test.py  test.log

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

$ 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 个答案:

答案 0 :(得分:2)

这是因为,fabric基本上将您指定的任务作为单独的子进程执行。因此,子进程的输出不是结构文件的输出。这不是一个新问题,已经讨论过before,请查看以查看解决方法。