擅长:python、mysql、java
<p>对于场景#2(处理资源非常密集且无法并行运行的管道)的建议是使用dagster的<a href="https://docs.celeryproject.org/en/stable/index.html" rel="nofollow noreferrer">Celery</a>集成,例如<a href="https://docs.dagster.io/_apidocs/libraries/dagster_celery#dagster_celery.celery_executor" rel="nofollow noreferrer">celery_executor</a>、<a href="https://docs.dagster.io/_apidocs/libraries/dagster_celery_docker#dagster_celery_docker.celery_docker_executor" rel="nofollow noreferrer">celery_docker_executor</a>或<a href="https://docs.dagster.io/_apidocs/libraries/dagster_celery_k8s#dagster_celery_k8s.celery_k8s_job_executor" rel="nofollow noreferrer">celery_k8s_job_executor</a>(如果您在kubernetes上)</p>
<p>这些工作方式是Dagster管道运行协调器将每个solid执行任务添加到芹菜队列,芹菜允许您限制每个队列中活动任务的数量。例如,这通常用于确保在给定时间只有X个实体连接到红移</p>
<p>Dagster还支持使用多个队列,因此您可以为资源密集型实体创建一个队列,为非资源密集型实体创建另一个队列(具有更高的并发限制)</p>
<p>关于场景1,我不确定您的设计约束是什么。一个想法是使用管道运行标记的标记方案来跟踪哪个管道运行对应于哪个文件;然后,对于每个文件,执行文件清理的进程首先验证删除之前是否存在成功的管道运行(通过查询运行数据库)</p>