并行运行在结构python中

parallel running in fabric python

我想通过python脚本在几个远程主机上并行运行一个方法。我有他们的证件(IP,USR,通行证)。为了做到这一点,我用@parallel来修饰这个方法,并通过execute()调用它,在这里我给了所有主机。我的问题是如何为每个任务设置env.usrenv.password?下面是我的代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class deployment()

    __init__():
        self.hosts = read_ips_from_csv

    def do_something(self)
       run(remote_command)

    def run_remote(self,func):
       execute(func,hosts = self.hosts)

    def deploy(self):
       run_remote(self.do_something)

main():

my_deploy = deployment()
my_deploy.deploy()

问题是如何为do_something()中的每个主机设置env参数。

非常感谢你的回答!!


好的,这就是我解决它的方法(在另一个问题https://stackoverflow.com/a/5568219/3216763中找到它):我在调用execute之前添加了env.hosts和env密码,如下所示:

1
2
3
4
def run_remote(self,func):
    env.hosts = ['user1@host1:port1', '[email protected]']
    env.passwords = {'user1@host1:port1': 'password1', '[email protected]': 'password2'}
    execute(func)

花了相当多的时间在上面,所以也许它能帮助别人。


  • 至少对于登录,可以将其与主机名一起发送,如如何在结构文件中设置目标主机中所述。
  • 我还没有找到一个简单的密码方法。这当然是猴修补。

注意,实现这一点的首选方法是使用ssh密钥,帮助您以非常简单的方式摆脱所有这些问题。