【问题标题】:How to run tasks in parallel in dagster?如何在 dagster 中并行运行任务?
【发布时间】:2021-12-02 23:15:37
【问题描述】:

我正在使用 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 吗?

谢谢

【问题讨论】:

    标签: python dagster


    【解决方案1】:

    如果您使用的是新的作业/操作 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

    【讨论】:

    • 编辑:从 Dagster 0.13.0 开始,多进程执行器现在是任何新作业的默认设置,因此您无需使用运行配置进行修改。
    猜你喜欢
    • 2015-08-23
    • 2010-11-03
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多