简介

最近在搭建回测框架时,需要每天定期更新数据。最简单的方法肯定是使用 cron 来定时执行任务。 但是 cron 有一些局限性,无法满足复杂的流程,并且可视化不够。 我的需求又没有那么复杂,并且我不希望这个工作流编排太占资源。 所以在一些工作流编排工具中,我选择了轻量的工作流编排工具 dagu

dagu 是一个由 golang 编写的轻量工作流编排工具。 只有单独的二进制文件,就可以满足工作流编排和可视化等需求,并且资源占用少。 最近版本里还直接支持了 skill,让AI可以更好地编写任务。

安装

以 Linux 为例,安装步骤如下,使用官方的安装脚本即可,自动化程度很高。

curl -fsSL https://raw.githubusercontent.com/dagucloud/dagu/main/scripts/installer.sh | bash

跟随安装脚本提示安装即可。

编排任务

dagu 支持使用 YAML 来定义任务,非常灵活。

选择工作目录

使用 working_dir 来指定工作目录。

working_dir: /path/to/working/dir

steps:
  - id: task-id
    run: python download.py

定时任务

使用 cron 来指定定时任务。

cron: "0 0 * * *"

working_dir: /path/to/working/dir

steps:
  - id: task-id
    run: python download.py

多任务和使用 uv 运行 python 脚本

使用 uv 来运行 python 脚本,可以更好地管理依赖。

steps:
  - id: download-task
    run: uv run python download.py
  - id: process-task
    run: uv run python process.py

参考