Dagu vs Dagster

Dagu 和 Dagster 解决的是不同的问题。

Dagster 是围绕 software-defined assets 与 lineage 构建的 Python 数据编排器。Dagu 是一个单一二进制文件,运行调用你已有命令的 YAML 工作流。本页说明两者各自的适用场景。

调用你已经在运行的命令的工作流
name: nightly-ops
schedule: "0 2 * * *"

steps:
  - id: extract
    run: python scripts/extract.py

  - id: transform
    run: ./bin/transform
    retry_policy:
      limit: 3
    depends: [extract]

  - id: notify
    run: ./scripts/slack-success.sh
    depends: [transform]

单一自包含二进制文件,无需运维 Postgres、daemon 或 webserver

工作流是声明式 YAML,而非 Python 框架

状态基于文件,无需外部 database 或 message broker

内置 shell、Docker、HTTP、SSH、子工作流、SQL 和 AI agent 步骤的 executor

At a glance

Dagu vs Dagster 一览

模型
Dagu

调用命令的声明式 YAML 工作流。

Dagster

用 Python 定义的 software-defined assets 与 lineage。

自托管
Dagu

基于文件保存状态的单一二进制,无需 database。

Dagster

由 Postgres database 支撑的 webserver 与 daemon。

最佳场景
Dagu

脚本、容器、运维作业和 AI agent 命令。

Dagster

需要 asset 与 lineage 建模的数据平台。

In depth

Where each tool fits

01

Dagu 提供什么

Dagu 负责调度、重试和观测命令。你用 YAML 编写工作流,Dagu 以一个基于文件的进程运行它。Web UI 显示运行、日志和历史,无需额外服务。

  • 运行脚本、二进制、容器、HTTP 调用、SSH 命令、SQL 和 AI agent 步骤。
  • 先以单一二进制起步,之后再扩展到队列或分布式执行。
  • 无需搭建 database 即可在 Web UI 中查看运行历史和日志。
02

Dagster 有何不同

Dagster 把 data asset 当作工作的基本单位。你用 Python 声明 asset,平台会追踪它们之间的 lineage、partition 和 materialization。自托管安装会运行一个 webserver 和一个 daemon,背后由 Postgres 支撑。

  • software-defined assets 为管道产出的表和文件建模。
  • partition 和 backfill 让你处理和重处理数据的切片。
  • IO manager 负责读写数据,使 asset 代码保持专注。
03

何时应选择 Dagster

如果你的工作本质上关乎 data asset 及其 lineage,Dagster 是更强的工具。Dagu 没有 software-defined assets,没有 IO manager,也不是 Python 框架,因此无法像 Dagster 那样为数据平台建模。

  • 你想要跨 dbt 模型和表的 lineage 与 asset 级可观测性。
  • 分区数据集、backfill 和 IO manager 是你管道的核心。
  • 团队用 Python 编写管道,并希望使用以 asset 为先的编程模型。

FAQ

Practical questions before adopting Dagu

Dagu 能取代 Dagster 吗?

在 data asset 这类工作上不能。Dagster 是为 software-defined assets、lineage 和 partition 而建的,而 Dagu 不做这些。只有当你主要需要调度和观测命令、而 asset 模型超出了实际需求时,Dagu 才能替代 Dagster。

Dagu 能编排数据管道吗?

可以,前提是管道能表达为命令、容器、HTTP 调用、SSH 命令、SQL 或子工作流。Dagu 编排这些步骤,但不会追踪它们之间的 data asset 或 lineage。

运行 Dagu 需要 database 吗?

不需要。Dagu 把状态保存在文件中,以单一二进制运行。没有 Postgres、daemon 或独立的 webserver 需要运维,这正是它与自托管 Dagster 在安装上的主要差异。

Next step

Start with one workflow.

Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.