ایرفلو ابزاری هست برای ایجاد پایپلاین برای اجرای سرویس ها و مدیریت آنها و زمان بندی کردن اجرای آنها .
چند بخش اصلی ایرفلو:
- init - اینیت کردن ساختار دیتابیس و فولدر بندی
- scheduler - زمان بندی سرویس ها و اجرای تریگر
- triggerer وظیفه ی فرا خوانی ورکر ها
- worker - اصلی ترین بخش ایرفلو، وظیفه ی ترجمه ی اپراتور ها و اجرای آن ها را با استفاده از celery دارد
- webserver - وظیفه ی این سرویس، نمایش گرافیکی و ایجاد رابط کاربر است
- postgres اطلاعات درونش خیره می شه
- redis کش
- cli رابط کاربری برای ترمینال
حتما در نسخه های داکری از اسلیم یا پایتونی استفاده نشو د و تنها از ایمیج هایی که فقط ایر فلو دارند استفاده شود مانند
image: apache/airflow:2.5.3
DAG
-
schedule_interval زمان بندی اجرای تسک است و با datedelta - crontab می شه تنظیم کنیم
-
start_date تاریخ شروع تسک
ترتیب اجام تسک ها را می تونیم با << نمایش بدیم
docker operator
یکی از مهم ترین اپراتور ها برای اجرای تسک است
توجه شود داکر اپراتور ، سرویس ها را از داکر کامپوز نمی خونه ،بلکه خودش می تونه stand alone یک ایمیج رو ران کنه ، و مانند داکر کامپوز که مقادیر داکر رو میگیره ، به DockerOperator هم باید مقادیر رو بدیم :
- task_id - هر اپراتور یک شناسه دارد
- image - نام و تگ ایمیج
- container_name - نامی که قراره ساخته بشه، بهتره با نام هایی که داکر کامپوز شاید بسازه ، یکی نباشه
- do_xcom_push پیام ها رو توی یه تیبل میریزه - بولیین
- command
- mounts - مانند ، والیوم است ، سورس و تارگت می گیرد
mounts=[Mount( source="/usr/local/projects/news_fetcher/config.json", target="/app/config.json", type="bind")] - network_mode - توجه شود در صورتی که بخوهایم از شبکه ی داکر کامپوز استفاده کنیم ، ابتدا باید لیست نتورک های داکر را گرفت ، سپس اونی که شبیه به اسم دایرکتوری است را بزاریم
postgres operator
ابتدا باید یک کانکشن ساخت : در صفحه وب سرور - در منوی ادمین - در بخش کانکشن
توجه شود باید کانکشنی ست کنیم که در نتورک خود ایرفلو باشد . و در نهایت نام کانکشن باید در اوپراتور داده شود :
```
remove_expire_link = PostgresOperator(
task_id="news_postgres",
postgres_conn_id="postgres_default",
sql="""
```