Operator — класс/шаблон «что делать» (PostgresOperator, BashOperator); Task — конкретный узел в DAG, экземпляр оператора с task_id и параметрами.
Разбор
- Один и тот же operator-класс можно использовать много раз как разные tasks.
- TaskFlow
@task тоже создаёт tasks, скрывая boilerplate операторов.
- У task есть состояние в run: success/failed/up_for_retry…
- Dependencies задают между tasks, не между классами операторов.
Итог
Operator = тип действия; Task = узел DAG с этим действием.