Executors¶
A Flow
supports multiple backend executors which configure how work is executed in the workflow.
Docker¶
By default, flows are configured to use the Docker
executor which launches each Layer
registered to a Flow
in its own docker container. The launched containers can be configured with the layer’s Container
configuration.
from laminar import Flow
from laminar.configurations import executors, layers
class DockerFlow(Flow):
...
@DockerFlow.register(container=layers.Container(cpu=1, memory=1500))
class A(Layer):
...
flow = DockerFlow(executor=executors.Docker())
Thread¶
The Thread
executor executes layers directly in the main Python process. This is very useful for testing.
from laminar import Flow
from laminar.configurations import executors
class ThreadFlow(Flow):
...
flow = ThreadFlow(executor=executors.Thread())
AWS.Batch¶
Warning
AWS.Batch
is experimental.
The `AWS.Batch`` executor executes layers on the AWS Batch compute service.
from laminar import Flow
from laminar.configurations import executors
class BatchFlow(Flow):
...
flow = BatchFlow(executor=executors.AWS.Batch(job_queue_arn=..., job_role_arn=...))