Dagu vs Prefect

Если нужна orchestration без написания Python, посмотрите на Dagu.

Prefect — это Python framework для data-команд, которые пишут flow в коде. Dagu — один бинарник, исполняющий декларативный YAML с вызовом ваших существующих команд, без БД для эксплуатации. Эта страница честно показывает, где что подходит.

Workflow, вызывающий команды, без decorator
# etl.yaml
schedule: "0 6 * * *"
 
steps:
  - id: extract
    run: python etl/extract.py --since=yesterday
    output: RAW_PATH
 
  - id: transform
    run: python etl/transform.py ${RAW_PATH}
    retry_policy:
      limit: 3
      interval_sec: 60
    depends: [extract]
 
  - id: load
    run: python etl/load.py --target=warehouse
    depends: [transform]

Execution order

extracttransform3 retriesload

Workflow в виде декларативного YAML, а не Python-код

Один бинарник с file-backed state

Без внешней БД или message broker

Executors для shell, Docker, HTTP, SSH, SQL, sub-workflow и AI-agent шагов

At a glance

Dagu vs Prefect кратко

Авторинг
Dagu

Декларативный YAML, вызывающий команды.

Prefect

Python-функции с decorator @flow и @task.

Runtime
Dagu

Один бинарник с file-backed state.

Prefect

Prefect server плюс БД и отдельные workers.

Лучший сценарий
Dagu

Script-, container- и ops-автоматизация, где нужен небольшой self-hosted runtime.

Prefect

Python-центричные data-команды, которым нужны динамические flow и опциональный managed cloud.

In depth

Where each tool fits

01

Декларативный YAML вместо Python framework

Prefect моделирует работу как Python-функции, обернутые decorator @flow и @task, поэтому workflow живет внутри вашего кода. Dagu оставляет каждый шаг командой и оборачивает вокруг него расписания, ретраи и зависимости в YAML.

  • Определяйте шаги, запускающие shell, Docker, HTTP, SSH, SQL или sub-workflow
  • Сохраняйте workflow читаемым для операторов, не пишущих Python
  • Держите YAML в git рядом со скриптами, которые он вызывает
02

Один бинарник с file-backed state

Продакшн-конфигурация Prefect запускает Prefect server с БД вроде Postgres плюс workers, исполняющие flow. Dagu поставляется как один бинарник и хранит историю запусков, логи и состояние очереди в локальной файловой системе.

  • Старт с одной загрузки, без подготовки БД
  • Бэкап и обновление через работу с файлами и одним бинарником
  • Рост от локальных запусков к queue-based или distributed workers по мере нужды
03

Когда выбрать Prefect

Prefect лучше, когда ваши workflow относятся к Python, а команда готова эксплуатировать его сервисы. Часть потребностей ложится на Prefect естественнее, чем на Dagu.

  • Нужны динамические DAG, форма которых вычисляется в Python во время выполнения
  • Ваши pipeline передают Python-объекты между задачами, а не вызывают команды
  • Нужен managed-вариант, который Prefect дает через Prefect Cloud

FAQ

Practical questions before adopting Dagu

Заменяет ли Dagu Prefect?

Не для каждой команды. Если ваши workflow на Python и опираются на динамические flow или передачу Python-объектов между задачами, лучше Prefect. Dagu лучше, когда работа выполняется как команды, контейнеры или service calls, а вам нужен YAML без БД.

Можно ли использовать Dagu без написания Python?

Да. Workflow в Dagu — это YAML, вызывающий команды. Шаг может запустить ваш Python-скрипт, но самому слою orchestration не нужны ни Python, ни импорт фреймворков.

Какая инфраструктура нужна Dagu по сравнению с Prefect?

Dagu нужен один бинарник и файловая система, так как состояние file-backed. Типичный деплой Prefect запускает server с БД и один или несколько workers. У Dagu нет managed cloud, поэтому вы хостите его сами.

Next step

Start with one workflow.

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