Storytelling with Data
Xosh, keling Airflow da DAG larni yaratish turlari haqida va yollari haqida korib chiqamiz.
Biz bilgan dag =Dag() usuli
Agarda buni import qilmasak DAG yaratib olmaymiz.
'''
from airflow import DAG
'''
import qilganimizdan song
'''
dag = DAG(...)
'''
shunaqa tartibda yaratib organganmiz.
lekin bu usul kop code yozishga sabab boladi va ishlashida ham farqi bor keyinroq koramiz. bu haqida toliq.
Aytaylik Task yaratmoqchimiz. Buning uchun Operatorlarni chaqirishimiz kerak boladi.
from airflow.operators.python import PythonOperator
task_1 = PythonOperator(
task_id='task_1',
dag=dag, # DAG ga boglashimiz uchun shu parametr kerak har doim.
...
)
Lekin har bir yangi taskda dag=dag parametrini har safar 100 ta task yozsak 100 marta yozish kerak boladi.
task_2 = PythonOperator(
task_id='task_2',
dag=dag, # Buni yana yozish kerak
...
)
task_3 = PythonOperator(
task_id='task_3',
dag=dag, # Yana, yana
...
)
Biz shuni yozmasdan dag yaratishni organamiz 😁
Context Manager - with operator
with DAG(...) as dag:
task_1 = PythonOperator(task_id='task_1', ...)
task_2 = PythonOperator(task_id='task_2', ...)
task_3 = PythonOperator(task_id='task_3', ...)
Bu usul ancha qulay va code quyidagicha boladi
Bu usulda dag=dag ni qayta-qayta yozish shart emas
yana bir usul bor lekin
Uchinchi USulda biz
DAG dekoretorini korib chiqamiz:
from airflow.decorators import dag, task
@dag(...)
def my_dag():
@task
def task_1():
...
@task
def task_2():
...
task_1() >> task_2()
my_dag()
Bu usul with DAG(...) as dag: dan ham yaxshiroq, chunki Airflow keyinchalik dekorator usulini toliq qollab-quvvatlashi kutilmoqda.
Bundan tashqari, @task dekoratori ham mavjud bo‘lib, u PythonOperator ni almashtiradi.
DAG dekoratori (@dag) tavsiya qila olaman, chunki Airflow shu yonalishda rivojlanmoqda. Bundan tashqari, @task dekoratori orqali vazifalarni ham aniqlashtira oladi, bu esa kodni ancha clean code qiladi.
Ammo with DAG(...) usuli ham yaxshi, faqat eski dag=dag usulidan foydalanish tavsiya qilmayman lekin hamma usulni bilib qoygan yaxshi sababi interviewda sorab qolishadi
1 · 693 ·