为什么:
from fabric.api import env, run
def update():
env.hosts = ['apycat']
run('cd /var/www/menu; svn up')
我fab update
时不起作用,而:
from fabric.api import env, run
env.hosts = ['apycat']
def update():
run('cd /var/www/menu; svn up')
确实
在文档中没有找到任何相关内容。
答案 0 :(得分:7)
在fab命令已经成为fab任务的主机列表之后指定主机列表将不起作用。因此,对于第一个示例,您更新任务没有设置主机列表,然后允许以下run()进行操作。这个is here的文档中的一个很好的部分。
但是请注意,你可以得到一个像第一个一样的用例,以两种方式之一工作。首先使用settings()上下文管理器:
def foo():
with settings(host_string='apycat'):
run(...)
另一个是更新的api函数execute():
def bar():
run(...)
def foo():
execute(bar, hosts=['apycat'])