2015-12-28 4 views
4

Когда я использую диспетчер контекста hide("everything"), и проблема с тканью не удается, я все равно получаю сообщение. docs чтение:Что скрывает («все») Fabric?

всех: Включает в себя предупреждение, бег, пользователь и выход (см. Выше) Таким образом, при выключении все, вы будете видеть только голый минимум вывод (только состояния и отладки, если это on), а также ваши собственные заявления о печати.

Но это не совсем так, верно? - Я вижу сообщения о состоянии, отладки и прерывания.

Если я действительно хочу, чтобы скрыть все, есть лучший способ, чем:

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

ответ

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. Честно говоря я бы придерживаться их строить в декораторов, так что имеет меньше шансов изменения, плюс вы получите добавленную стоимость более вещий считываемый код:

@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') 
    .... 

НО, в в конце дня это одно и то же.

0

Это то, что я всегда использовал:

from fabric.state import output 

output['everything'] = False