简介
最近在搭建回测框架时,需要每天定期更新数据。最简单的方法肯定是使用 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