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的作用了,把上面的注释去掉,他就只输出一个了