Sobes.tech
Назад к вопросам
Middle
5

Airflow DAG и джобы ты как писал — сорок руками или как-то с шаблонами?

Компании, где спрашивали
МВидеоМВидео

Ответ от нейросети

sobes.tech AI

При написании Airflow DAG и джоб я стараюсь избегать ручного копирования и вставки кода ("сорок руками"). Вместо этого использую шаблоны и генерацию кода, чтобы повысить повторное использование и снизить вероятность ошибок.

Например, если у меня есть несколько похожих DAG с разными параметрами, я могу создать функцию, которая принимает параметры и возвращает объект DAG. Это позволяет быстро создавать новые DAG без дублирования кода:

from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import datetime

def create_dag(dag_id, schedule, default_args):
    def task_function(**kwargs):
        print(f"Running task in {dag_id}")

    dag = DAG(dag_id, schedule_interval=schedule, default_args=default_args)

    with dag:
        task = PythonOperator(task_id='print_task', python_callable=task_function)

    return dag

# Пример создания нескольких DAG
for env in ['dev', 'prod']:
    dag_id = f'my_dag_{env}'
    globals()[dag_id] = create_dag(dag_id, '@daily', {'start_date': datetime(2023, 1, 1)})

Такой подход упрощает поддержку и масштабирование пайплайнов.