当我使用hide("everything")
上下文管理器,并且结构任务失败时,我仍然收到消息。 docs读到:
一切:包括警告,运行,用户和输出(见上文)。因此,当关闭所有内容时,您只会看到最小的输出(只有状态和调试,如果它打开) ,以及您自己的印刷声明。
但这并不严格,对吗? - 我看到状态,调试和中止消息。
如果我确实想要隐藏一切,那么有更好的方法:
with hide("aborts"), hide("everything"):
...
答案 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