Fabric 的“hide("everything")”实际上隐藏了什么?
What does Fabric's `hide("everything")` actually hide?
当我使用 hide("everything")
上下文管理器并且结构任务失败时,我仍然收到一条消息。 docs 读作:
everything: Includes warnings, running, user and output (see above.) Thus, when turning off everything, you will only see a bare minimum of output (just status and debug if it’s on), along with your own print statements.
但这不是严格意义上的,对吧? -- 我看到状态、调试和中止消息。
如果我真的想隐藏所有内容,有没有比以下更好的方法:
with hide("aborts"), hide("everything"):
...
这是我一直用的:
from fabric.state import output
output['everything'] = False
如有疑问,请查看来源:
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
的一个很好的包装器。坦率地说,我会坚持使用他们的 build-in 装饰器,因为它改变的可能性较小,而且您可以获得更多 pythonic-readable 代码的附加值:
@task
def task1():
with hide('running', 'stdout', 'stderr'):
run('ls /var/www')
....
对比
@task
def task1():
output['running'] = False
output['stdout'] = False
output['stderr'] = False
# or just output['everything'] = False
run('ls /var/www')
....
但是,归根结底还是一样。
当我使用 hide("everything")
上下文管理器并且结构任务失败时,我仍然收到一条消息。 docs 读作:
everything: Includes warnings, running, user and output (see above.) Thus, when turning off everything, you will only see a bare minimum of output (just status and debug if it’s on), along with your own print statements.
但这不是严格意义上的,对吧? -- 我看到状态、调试和中止消息。
如果我真的想隐藏所有内容,有没有比以下更好的方法:
with hide("aborts"), hide("everything"):
...
这是我一直用的:
from fabric.state import output
output['everything'] = False
如有疑问,请查看来源:
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
的一个很好的包装器。坦率地说,我会坚持使用他们的 build-in 装饰器,因为它改变的可能性较小,而且您可以获得更多 pythonic-readable 代码的附加值:
@task
def task1():
with hide('running', 'stdout', 'stderr'):
run('ls /var/www')
....
对比
@task
def task1():
output['running'] = False
output['stdout'] = False
output['stderr'] = False
# or just output['everything'] = False
run('ls /var/www')
....
但是,归根结底还是一样。