بخش اول : مفاهیم پایه و شروع کار با ایرفلو
بخش دوم : مهارت‌های حرفه‌ای در طراحی جریان‌های کار
بخش سوم : طراحی و مدیریت جریان‌های کار پیچیده
بخش چهارم: کارگاه عملی و آشنایی با جایگزین‌های ایرفلو

اجرای دگ‌ها از طریق API و شروع کار با API های رسمی ایرفلو – محتوای ویدئویی

در ادامه‌ی یادگیری ساخت DAGهای پارامتری‌شده (مرحله‌ی قبل)، حالا وقت آن است که این دگ‌ها را خودکار و بیرون از UI ایرفلو اجرا کنیم.

استفاده از API برای فراخوانی DAGها مزایای زیر را به همراه دارد:

  • اتوماسیون بدون نیاز به UI: امکان اجرای خودکار جریان‌های کاری بدون نیاز به رابط کاربری.
  • یکپارچگی با سیستم‌های خارجی یا CI/CD: ادغام ایرفلو با سایر سیستم‌ها و ابزارهای توسعه.
  • اجرای تکرارپذیر با پارامترهای خاص: امکان تنظیم پارامترهای ورودی برای هر اجرا.

🔐 احراز هویت با JWT در ایرفلو ۳

در نسخه ۳ ایرفلو، برای فراخوانی APIها نیاز به توکن JWT دارید. برای دریافت این توکن، می‌توانید از دستور زیر استفاده کنید:

curl -X POST http://localhost:8080/auth/token \
  -H "Content-Type: application/json" \
  -d '{
    "username": "airflow",
    "password": "airflow"
  }'

در پاسخ، توکن JWT دریافت خواهید کرد که باید در هدر درخواست‌های بعدی استفاده شود. (این نام کاربری و پسورد در فایل داکر کامپوز تنظیم شده است)


📅 فراخوانی DAG با پارامترهای زمان اجرا و logical_date منحصر به فرد

برای جلوگیری از خطاهای تکرار، هر فراخوانی باید دارای logical_date منحصر به فرد باشد. در ادامه، نمونه‌ای از درخواست cURL برای فراخوانی یک DAG با پارامترهای زمان اجرا آورده شده است:

curl -X POST http://localhost:8080/api/v2/dags/your_dag_id/dagRuns \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <JWT-TOKEN>" \
  -d '{
    "logical_date": "2025-09-14T12:00:00+00:00",
    "conf": {
      "max_tx_number": 10,
      "start_date": "2025-09-14T00:00:00+00:00",
      "end_date": "2025-09-14T23:59:59+00:00"
    }
  }'

در این مثال:

  • logical_date: زمان اجرای DAG به فرمت ISO 8601.
  • conf: پارامترهای ورودی برای DAG.

🐍 نمونه کد پایتون برای فراخوانی DAG

import requests
import json
from datetime import datetime, timezone

ENDPOINT_URL = "http://localhost:8080"
JWT_TOKEN = "<JWT-TOKEN>"
DAG_ID = "your_dag_id"

conf = {
    "max_tx_number": 10,
    "start_date": "2025-09-14T00:00:00+00:00",
    "end_date": "2025-09-14T23:59:59+00:00"
}

logical_date = datetime.now(timezone.utc).isoformat()

response = requests.post(
    f"{ENDPOINT_URL}/api/v2/dags/{DAG_ID}/dagRuns",
    headers={
        "Content-Type": "application/json",
        "Authorization": f"Bearer {JWT_TOKEN}"
    },
    data=json.dumps({"logical_date": logical_date, "conf": conf})
)

print(response.status_code)
print(response.json())

🗂️ جدول اندپوینت‌های API ایرفلو ۳

در نسخه ۳ ایرفلو، اندپوینت‌های API به /api/v2 تغییر یافته‌اند. لیست کامل آنها را در مستندات رسمی ایرفلو می توانید ببینید. در ادامه، جدول اندپوینت‌های اصلی آورده شده است:

عملیاتاندپوینت APIتوضیحات
دریافت لیست DAGها/api/v2/dagsدریافت اطلاعات تمامی DAGها
دریافت اطلاعات یک DAG/api/v2/dags/{dag_id}دریافت اطلاعات یک DAG خاص
دریافت وضعیت DAG Run/api/v2/dags/{dag_id}/dagRuns/{dag_run_id}دریافت وضعیت یک اجرای خاص از یک DAG
دریافت لیست Taskها/api/v2/dags/{dag_id}/tasksدریافت لیست تمامی تسک‌های یک DAG
دریافت اطلاعات یک Task/api/v2/dags/{dag_id}/tasks/{task_id}دریافت اطلاعات یک تسک خاص از یک DAG
دریافت لیست متغیرها/api/v2/variablesدریافت لیست تمامی متغیرهای تعریف‌شده در ایرفلو
دریافت اطلاعات یک متغیر/api/v2/variables/{variable_name}دریافت اطلاعات یک متغیر خاص
ایجاد یک DAG Run جدید/api/v2/dags/{dag_id}/dagRunsایجاد یک اجرای جدید برای یک DAG
دریافت لیست اتصال‌ها/api/v2/connectionsدریافت لیست تمامی اتصال‌های تعریف‌شده در ایرفلو
دریافت اطلاعات یک اتصال/api/v2/connections/{connection_id}دریافت اطلاعات یک اتصال خاص

✅ نکات کلیدی

  • استفاده از logical_date منحصر به فرد: برای جلوگیری از خطاهای تکرار در فراخوانی DAG.
  • احراز هویت با JWT: استفاده از توکن JWT برای احراز هویت در درخواست‌های API.
  • پارامترهای ورودی با conf: ارسال پارامترهای ورودی به DAG از طریق فیلد conf.
  • یکپارچگی با سیستم‌های خارجی: امکان ادغام ایرفلو با سایر سیستم‌ها و ابزارهای توسعه از طریق API.

محتوای ویدئویی

کارگاه عملی دوم جلسه پنجم به فراخوانی یک دگ پارامتر دار از طریق خط فرمان و به کمک API ایرفلو میپردازد و مثالی که در بالا توضیح داده شده است را می توانید به صورت عملی در فیلم آموزشی زیر مشاهده کنید.

نکته : اگر فیلم در قسمت زیر قابل مشاهده نیست، مطمئن شوید که با آی پی ایران متصل شده اید یا یک اینترنت پروایدر دیگر را امتحان کنید .

فروشگاه
جستجو
دوره ها

لطفا کلمات کلیدی را وارد کنید