繁体   English   中英

如何在结构中同时在不同主机上执行不同的长期运行任务?

[英]How to execute different long-running tasks on different hosts at the same time in fabric?

我对Fabric还是很陌生,我正在尝试创建一个脚本,该脚本启动三个不同的服务器和一个客户端,但是似乎在第一个任务时停止了。 这是我的代码:

env.user='userX'
env.roledefs = {
'client':['HostC'],
'id 0':['Host0'],
'id 1':['Host1'],
'id 2':['Host2']
}

def go():
execute(serve0)
execute(serve1)
execute(serve2)
execute(req)

@roles('id 0')
def serve0():
run('./go/bin/kvsd -id 0 -config-file ~/go/src/github.com/userX/kvs/kvsd/conf/config.ini')

@roles('id 1')
def serve1():
run('./go/bin/kvsd -id 1 -config-file ~/go/src/github.com/userX/kvs/kvsd/conf/config.ini')

@roles('id 2')
def serve2():
run('./go/bin/kvsd -id 2 -config-file ~/go/src/github.com/userX/kvs/kvsd/conf/config.ini')

@roles('client')
def req():
run('./go/bin/kvsc -config-file ~/go/src/github.com/userX/kvs/kvsc/config.ini')

我使用“ fab go”运行它,但这只会导致它执行serve0,它不会在没有中断的情况下停止,因此会阻止其他任何任务的执行。 有没有办法让它们并行运行? 另外,是否有更好的方法将特殊任务与特殊主机联系起来?

@parallel装饰器添加到您的函数中,它们将自动并行运行。 此处有更多详细信息: http : //docs.fabfile.org/en/1.10/usage/parallel.html

从cli调用Fabric时,请使用-H来标识要使用的主机。 在任务中,您可以检查env词典,也可以使用@hosts装饰器指定在哪里运行。 此处提供更多信息: http : //docs.fabfile.org/en/1.10/usage/execution.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM