https://dagster.io/ logo
Title
d

Daniel Carleton

06/15/2021, 4:31 PM
Can Dagster help with mutual exclusivity across solids and workflows? My use case is preventing DBT from running concurrently with itself. e.g. Both in response to a regular schedule and to a signal.
r

rex

06/15/2021, 4:34 PM
We have the concept of run concurrency, to limit the number of concurrent pipeline runs of the same tag https://docs.dagster.io/deployment/run-coordinator#limiting-run-concurrency
At the solid level, if you’re using the celery run launcher, you can enforce concurrency limits by tagging the solids with a celery queue you’ve configured. The celery queue can have a limited number of workers (say, 1 worker), so that those solids only execute one at a time https://docs.dagster.io/deployment/guides/kubernetes/customizing-your-deployment#configuring-celery-queues
cc @johann if we have something similar in the works for our standalone K8sRunLauncher/Executor
d

Daniel Carleton

06/15/2021, 4:38 PM
r

rex

06/15/2021, 4:39 PM
yep
d

Daniel Carleton

06/15/2021, 4:40 PM
Brilliant!
Looks like
QueuedRunCoordinator
can limit concurrency without needing to resort to celery
j

johann

06/15/2021, 4:40 PM
Without celery we currently only support concurrency limits per run
d

Daniel Carleton

06/15/2021, 4:40 PM
Ah hmm, and the granularity of a "run" is at the workflow level?
j

johann

06/15/2021, 4:41 PM
^ yep, with the
QueuedRunCoordinator
. Yes, or we use the term pipeline
d

Daniel Carleton

06/15/2021, 4:41 PM
Yes
s/workflow/pipeline
1
Seems like for local dev we can just use the in-process executor, and switch to celery for prod where concurrency is a concern. Thanks for the help! Great project -- hoping to adopt it into our infra