Dagu vs Windmill
Dagu vs Windmill:声明式 YAML 对比脚本与应用平台。
两者都能自托管,也都很快。Windmill 把脚本变成 workflow、webhook 和 low-code 应用,并使用 PostgreSQL。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]单一二进制,无需 PostgreSQL
Workflow 是调用现有命令的声明式 YAML
面向 shell、Docker、HTTP、SSH、SQL、子工作流和 AI Agent 的 executor
可本地、队列或分布式运行
两种定义工作的方式
Windmill 是 code-first 平台。你用 Python、TypeScript、Go、Bash 或 SQL 写脚本,它为每个脚本配上 webhook 和生成的 UI。Dagu 把 workflow 保留在 YAML 中,把你的脚本和二进制当作步骤。
- Windmill 在平台内存储和运行脚本,并自动生成输入表单。
- Dagu 用受版本控制的 YAML 定义图,并调用命令。
- 两者都提供依赖关系、重试、调度和运行历史。
运维它需要什么
Windmill 需要 PostgreSQL 来保存状态和作业队列,通常在其上运行 server 和 worker 容器。Dagu 是把状态保存在文件里的单一二进制,因此没有需要部署、备份或升级的数据库。
- Dagu 从一个由本地文件支撑的进程开始。
- 之后可在不改变 workflow 模型的情况下加入队列和 worker。
- Windmill 扩展性很好,但前提是 PostgreSQL 存在并被管理。
何时该选 Windmill
Windmill 做的不只是编排,这种广度正是它的价值。如果你想把脚本作为可共享的端点托管,并围绕它们构建内部应用和 UI,Windmill 覆盖了 Dagu 不涉足的领域。
- 你想要 low-code 应用/UI 构建器,而不只是一个运行器。
- 你想要自动生成的表单、approval 步骤和大量内置集成。
- 你的团队更愿意把逻辑写成受管理的脚本,而不是调用外部命令。
Windmill vs. Dagu 速览
FAQ
Practical questions before adopting Dagu
Dagu 能替代 Windmill 吗?
不能完全替代。Dagu 替代编排部分:调度、依赖、重试、日志和运行 UI。它不提供 Windmill 的 low-code 应用构建器、生成的 UI 或庞大的集成目录。如果你只需要调度和观测命令,Dagu 是更轻的选择。
Dagu 需要 PostgreSQL 吗?
不需要。Dagu 把状态保存在本地文件并以单一二进制运行,因此没有要安装或管理的数据库。Windmill 依赖 PostgreSQL 来保存状态和作业队列。
Dagu 能运行 Python 和 TypeScript 脚本吗?
能。一个步骤可以运行任意命令,所以 Python、TypeScript、Bash 或编译好的二进制都能用。区别在于 Dagu 调用磁盘上的脚本,而不是像 Windmill 那样托管和管理它们。
Start with one workflow.
Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.