首页 > 解决方案 > 如何在 dagster 中并行运行任务?

问题描述

我正在使用 dagster 运行到本地 node.js 微服务管道,以便执行测试。

ide 是执行 n 个 docker_files 和 n 个 node.js 微服务,就像使用 dagster 一样轻松。

问题是,当我执行第一个第二个任务时,一个 shell 命令执行一个 docker 容器,dagsteer 保持在该点,而不是执行同一级别的所有任务。

像这样的当前 dag 日志

login aws
    |
    |
    |
    v
[docker_elastic, docker_kafka, sleep_10]
                                  |
                                  |
                                  |
                                  v
[node_service_one, node_service_two, node_service__three]

我可以同时执行所有 docker_elastic 和所有 node_services 吗?

是否有另一个易于配置的选项来轻松构建本地 dags?

谢谢

标签: pythondagster

解决方案


如果您正在使用新的作业/操作 API,那么 Dagster 将默认使用多进程执行器,它将能够并行运行多个任务。

如果您使用的是管道/实体 API,那么您可以传入运行配置以告诉 Dagster 使用多进程执行器而不是默认的单进程执行器。如果您从 Dagit 启动管道,您将传入如下所示的运行配置:

execution:
    multiprocess: {}

如果您从 python api 启动这些运行,那么运行配置将是:

run_config={"execution": {"multiprocess": {}}}

请注意,您需要使用与多进程兼容的 IOManager,例如 fs_io_manager ( from dagster import fs_io_manager)。

关于多进程执行的完整文档在这里:https ://docs.dagster.io/0.12.14/concepts/solids-pipelines/pipeline-execution#multiprocessing-execution


推荐阅读