Перейти к содержанию

Динамическая генерация DAG (Programmatic/Dynamic DAGs)

DAG можно создавать программно: в цикле, по конфигу, по списку из БД или API. Один Python-файл может генерировать несколько DAG с разными dag_id и параметрами. Важно: при парсинге не выполнять тяжёлые или недетерминированные операции (обращения к сети, случайные значения без фиксации seed), иначе парсинг станет медленным и нестабильным. Все данные для генерации должны быть доступны в момент загрузки DagBag.

Типичные паттерны: DAG на каждую таблицу/схему (список из конфига или переменной), DAG на каждый клиент (список из БД), один шаблон DAG с разными default_args из конфига. Генерация через with DAG(...) as dag: или @dag и присвоение в глобальное пространство имён с уникальным dag_id. Файл должен при импорте только определять DAG-объекты, не запускать задачи.

При использовании переменных/конфигов учитывайте кэширование парсера: изменение переменной подхватится после следующего парсинга. Избегайте генерации тысяч DAG в одном файле — лучше разбить по источникам или использовать DAG bundles.

Подробнее: Dynamically generating DAGs, DAG best practices.


← Мультиязычность | К содержанию | Setup/teardown →