Backend

Your outflow pipelines can run on different backends. There are currently 3 backends in outflow:

  • default

  • parallel

  • slurm

Default backend

The default backend executes tasks sequentially in one python process. Tasks return dictionaries and these are passed to the next tasks as parameters, so object never leave the python context. You can pass objects as big as you want between the tasks.

Parallel backend

The parallel backend executes tasks inside a multiprocessing pool. It is useful for MapWorkflow.

Slurm backend

The slurm backend executes MapWorkflows by submitting a slurm array to a slurm cluster. See SlurmMapWorkflow for details.

Specify a backend

There are multiple ways to define the backend that will be used:

  • in the command line with the argument –backend

  • per command inside their definition

  • inside the config.yml file

Priority is in this order :

command line > command definition > config.yml

The recommended way is to leave backend: default inside the config.yml (or remove the key), and define the preferred backend for a given command using :

@RootCommand.subcommand(backend="parallel")
class MyCommand(Command):
    ...