Can Dagster help with mutual exclusivity across so...
# ask-community
d
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
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
r
yep
d
Brilliant!
Looks like
QueuedRunCoordinator
can limit concurrency without needing to resort to celery
j
Without celery we currently only support concurrency limits per run
d
Ah hmm, and the granularity of a "run" is at the workflow level?
j
^ yep, with the
QueuedRunCoordinator
. Yes, or we use the term pipeline
d
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