2016-09-13 65 views
0

例如:如何迭代fabric 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) 

輸出繼電器:

1 
6 
7 

Done.