如何在 dagster 中并行 运行 任务?

How to run tasks in parallel in 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?

谢谢

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

如果您正在使用 pipeline/solid 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