Fabric的@runs_once的理解

1:runs_once的用法,一直没理解,我看网上都是说:“ 函数修饰符,标识的函数只会执行一次,不受多台主机影响
    实在没理解,然后看了一下官方文档,这样解释
 
Fabric的@runs_once的理解_第1张图片
 
举个例子:
#!/usr/bin/python
from fabric.api import *

env.user="lile"
env.hosts=['10.0.0.145','10.0.0.147']
env.password="123456"

#@runs_once
def local_task():
    local("uname -a")

def remote_task():
    with cd("/tmp"):
        run("ls")

 

然后执行上面这个例子:fab -f simple.py local_task 输出结果为:
  Fabric的@runs_once的理解_第2张图片

 

 
我的本意是要只要输出本机的信息,我执行这个脚本的机器是 10.0.0.146,而这个地方出现的是
[10.0.0.145] Executing task 'local_task'
[10.0.0.147] Executing task 'local_task'
而事实上这两个输出的信息都是10.0.0.146的信息,可以用ifconfig来测试,验证,那么如何只执行一次输出一条呢,那么就是@runs_once的作用了,把上面的注释去掉,他就只输出一个了
Fabric的@runs_once的理解_第3张图片

 

 
 

你可能感兴趣的:(Fabric的@runs_once的理解)