Fabric&s的“隐藏”(#34;一切")实际上隐藏了什么?

时间:2015-12-28 17:38:21

标签: python fabric

当我使用hide("everything")上下文管理器,并且结构任务失败时,我仍然收到消息。 docs读到:

  

一切:包括警告,运行,用户和输出(见上文)。因此,当关闭所有内容时,您只会看到最小的输出(只有状态和调试,如果它打开) ,以及您自己的印刷声明。

但这并不严格,对吗? - 我看到状态,调试和中止消息。

如果我确实想要隐藏一切,那么有更好的方法:

with hide("aborts"), hide("everything"):
    ...

2 个答案:

答案 0 :(得分:4)

如有疑问,请查看来源:

https://github.com/fabric/fabric/blob/master/fabric/context_managers.py#L98

这是实际的声明。 everything几乎就是一切:warnings, running, user, output, exceptions

https://github.com/fabric/fabric/blob/master/fabric/state.py#L411

这只是output的好包装。坦率地说,我会坚持他们的内置装饰器,因为它有更少的更改机会,而且你可以获得更多pythonic可读代码的附加价值:

@task
def task1():
    with hide('running', 'stdout', 'stderr'):
        run('ls /var/www')
        ....

VS

@task
def task1():
    output['running'] = False
    output['stdout'] = False
    output['stderr'] = False
    # or just output['everything'] = False
    run('ls /var/www')
    ....

但是,在一天结束时它也是一样的。

答案 1 :(得分:0)

这是我一直使用的:

from fabric.state import output

output['everything'] = False