如何在结构中并行执行多个任务

我知道通过使用-P开关或@parallel标签,我可以在多台主机上并行运行任务。

我试图在同一主机上并行执行多个长时间运行的任务:

@task
def task1():
  # long running op

@task
def task2():
  #long running op

@task
def task3():
  #long running op

@task
def backup_all():
  execute(task1)
  execute(task2)
  execute(task3)

如何通过使用fabric在同一主机上并行启动task1,task2和task3。 我知道我可以用不同的任务运行多个工艺流程,但我正在寻找一种涉及结构的解决方案。


你有很多方法来解决这个任务。 您可以使用bash / linux级别的作业控件,并使用bg在后台运行任务,然后wait它们完成。 解释这种控制机制的文档。

如果你仍然真的想要使用Fabric / Python,你可能需要使用已经在lib中的job_queue ,然后编写你自己的队列来推送它们,或者阅读多处理,然后做一些简单的python forking 。 尽管这基本上是所有job_queue正在做的。


fabric每个主机运行一个任务。 -P交换机仅在不同主机上并行运行任务。 在同一主机上没有并行化。

您可以手动并行化命令,例如,使用xargs -P或GNU parallel

Invoke (测试版)声明能够并行运行任务。 它从fabric提取非ssh部分。 如果它安装在远程主机上,则可以使用fabric来调用将在同一主机上并行运行任务的invoke命令。

链接地址: http://www.djcxy.com/p/78385.html

上一篇: How to execute multiple tasks in parallel in fabric

下一篇: How to convert byte[] to InputStream?