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 阅读(460) 评论(0) 编辑 收藏 举报