Fabric env.hosts并以相同的方法运行=>未找到主机

Jil*_*Vie 9 python deployment fabric

为什么:

from fabric.api import env, run

def update():
    env.hosts = ['apycat']
    run('cd /var/www/menu; svn up')
Run Code Online (Sandbox Code Playgroud)

在我的fab update时候不起作用,同时:

from fabric.api import env, run

env.hosts = ['apycat']

def update():
    run('cd /var/www/menu; svn up')
Run Code Online (Sandbox Code Playgroud)

呢?

在文档中没有找到任何相关内容.

Mor*_*gan 7

在fab命令已经为fab任务创建主机列表之后指定主机列表将不起作用.因此,对于第一个示例,您更新任务没有设置主机列表,然后允许以下run()进行操作.这里的文档中有一个很好的部分.

但是请注意,你可以得到一个像第一个一样的用例,以两种方式之一工作.首先使用settings()上下文管理器:

def foo():
    with settings(host_string='apycat'):
        run(...)
Run Code Online (Sandbox Code Playgroud)

另一个是更新的api函数execute():

def bar():
    run(...)

def foo():
    execute(bar, hosts=['apycat'])
Run Code Online (Sandbox Code Playgroud)