欢迎来到李先生的博客

深山的鹿,不知归处;万般皆苦,只可自渡。
扩大
缩小

Fabric的@runs_once的理解

1:runs_once的用法,一直没理解,我看网上都是说:“函数修饰符,标识的函数只会执行一次,不受多台主机影响
    实在没理解,然后看了一下官方文档,这样解释
 
 
举个例子:
#!/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 输出结果为:
 

 

 
我的本意是要只要输出本机的信息,我执行这个脚本的机器是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的作用了,把上面的注释去掉,他就只输出一个了

 

 
 

posted on 2017-06-02 14:55  Captain_Li  阅读(204)  评论(0编辑  收藏

导航