Назад к вопросам
МВидео
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)})
Такой подход упрощает поддержку и масштабирование пайплайнов.