Вопрос проверяет понимание того, как в Airflow описываются конкретные шаги работы и чем оператор отличается от задачи.
Оператор в Airflow — это шаблон для выполнения конкретного действия. Он описывает, что именно нужно сделать: запустить Python-код, выполнить SQL или вызвать API. Задача создаётся на основе оператора внутри DAG. Один оператор можно использовать много раз. Оператор не управляет порядком выполнения — этим занимается DAG.
Airflow разделяет понятия «что делать» и «когда делать». Оператор отвечает за первое.
Operator — это объект в Airflow, который описывает единичное действие, выполняемое в рамках DAG.
Важно различать:
оператор — класс (шаблон поведения);
task — экземпляр оператора внутри DAG.
Пример:
PythonOperator(
task_id="process_data",
python_callable=process
)
Здесь:
PythonOperator — оператор;
process_data — задача.
Оператор определяет:
какой код выполняется;
какие параметры передаются;
как обрабатывать успех или ошибку.
Но он не определяет:
расписание;
зависимости;
ретраи на уровне DAG (они задаются отдельно).
Код оператора:
выполняется на worker-е;
запускается executor-ом;
изолирован от scheduler-а.
Это важно для понимания ресурсов и отказов.
Один и тот же оператор:
можно использовать в разных DAG;
можно создавать много задач на его основе;
легко параметризовать.
Это делает Airflow гибким и расширяемым.
используйте готовые операторы, если они есть;
не перегружайте оператор бизнес-логикой;
сложную логику выносите в отдельные модули.
Оператор — это строительный блок задач в Airflow. Он описывает конкретное действие, а DAG определяет, когда и в каком порядке эти действия выполняются.