如何迭代fabric ssh中的变量?

问题描述:

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

它不必是一个全球性的,什么是面料做到这一点的最佳方法是什么?

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

我决定不使用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.