在不同主机上并行和后台执行Fabric函数
之前也有人问过类似的问题,但没有解决我的情况。
我有这样的代码:
from fabric.api import *
env.rolesdefs = {'server1' : [me@312312], 'server2' : [me@978978]}
@roles('server1')
def run_task1():
do_stuff_forever
@roles('server2')
def run_task2():
do_other_stuff_forever
因为这个*_forever的特性,我无法顺序运行它们。task2在server2上永远不会启动。我该如何在两个不同的服务器上同时启动它们呢?
我尝试过:
def run_all():
execute(run_task1)
execute(run_task2)
@parallel这个装饰器没有用。我试过这里提到的建议 fabric常见问题。由于我只有screen可用,我找不到如何同时启动两个screen会话的方法。
我想,先把第一个放在后台运行能解决我的问题吗?我该如何可靠地把task1放到后台呢?我现在用的是fabric 1.4和python 2.6。
谢谢你的帮助。
附言:我想避免用shell脚本来分别在后台运行这两个任务的明显方法:
#! /bin/bash
fab run_task1 &
fab run_task2 &
1 个回答
-1
如果你设置了
env.parallel = True
这样做有帮助吗?