2016-09-13 4 views
0

Например:Как перебирать переменную в структуре ssh?

global count 
count += 1 
@task 
def install(hosts, local_swift_config): 
    env.use_ssh_config = True 
    env.hosts = set_hosts(hosts) 
    execute(place_count) 

def place_count(): 
    sudo('echo {} > /home/user/some_count'.format(count)) 
    count += 1 

Он не должен быть глобальным, то, что является предпочтительным способом сделать это с помощью ткани?

ответ

1
count = 0 
@task 
def install(hosts, local_swift_config): 
    env.use_ssh_config = True 
    env.hosts = set_hosts(hosts) 
    execute(place_count) 

def place_count(): 
    sudo('echo {} > /home/user/some_count'.format(count)) 
    global count 
    count += 1 

У меня была эта работа для простых функций в ткани. Ваша проблема связана с глобалами python, а не с тканью.

Смотрите эту тему для получения дополнительной информации о глобалов: Stacokverflow Python Globals

+0

Спасибо, я решил не использовать 'global' , и вместо этого использовал вместо этого переменную 'env'. Спасибо за головы. Раньше я никогда раньше не пользовался глобальным, и был в тот момент, когда я использовал бы все, что бы работало за счет хорошей практики. – jmunsch

0

я решил не использовать global:

def counter(): 
    env.count += 1 
    if env.count == 2: 
     env.count += 4 

@task 
def install(hosts): 
    env.count = 0 

    execute(counter) 
    print(env.count) 

    execute(counter) 
    print(env.count) 

    execute(counter) 
    print(env.count) 

Ouput:

1 
6 
7 

Done.