gpt4 book ai didi

python - Fabric 使用线程在不同主机上并行运行命令

转载 作者:太空宇宙 更新时间:2023-11-04 03:33:36 25 4
gpt4 key购买 nike

我正在使用 fab 在远程主机上运行命令。我无法使用内置的 fab 并行执行模式,因为我的代码是由我无法控制的某些库调用的。它创建多个线程并使用不同的主机参数调用我的driver(host) 方法。

下面是我如何尝试实现它的代码示例。

def setup_env_for_fab(host, user):
env.host_string = host
env.user = user

def run_command():
run("python some_program.py")

def driver(host):
setup_env_for_fab(host, "ubuntu")
run_command()

因此driver(host) 函数可以被具有不同主机参数的多个线程调用。如果 driver(host) 被不同线程同时调用,这会在不同主机上并行运行命令吗?如果这没有按预期工作,我该如何实现?

最佳答案

如果您真的不需要,请不要手动滚动。 Fabric 使用 multiprocessing 内置并行执行,例如使用 -P CLI 标志:

$ fab -H web1,web2,web3 -P driver

参见 Fabric docs on parallel execution对于所有选项。

至于线程支持,参见FAQ - Is Fabric thread-safe? .当前的 Fabric 1.10 仍然不是线程安全的:

Is Fabric thread-safe?

Currently, no, it’s not – the present version of Fabric relies heavily on shared state in order to keep the codebase simple. However, there are definite plans to update its internals so that Fabric may be either threaded or otherwise parallelized so your tasks can run on multiple servers concurrently.

更新:

结构现在是线程安全的:Upgrading from 1.x

关于python - Fabric 使用线程在不同主机上并行运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30071901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com