在 Airflow 中除錯與疑難排解

Python 中的 Apache Airflow 入門

Mike Metzger

Data Engineer

常見問題

  • Dag 未依排程執行
  • Dag 無法載入
  • 語法錯誤

呈現常見 Airflow 疑難排解問題的插圖

Python 中的 Apache Airflow 入門

Dag 未依排程執行

  • 至少有一段 schedule 期間尚未經過
    • 調整屬性以符合需求
  • 資源不足而無法執行
    • 增加系統資源
    • 增添更多系統
    • 調整 Dag 排程
Python 中的 Apache Airflow 入門

Dag 無法載入

  • 網頁 UI 中沒有 Dag
  • airflow dags list 中沒有 Dag

可能的解法

  • 確認 Dag 檔案在正確資料夾(Dags 資料夾外的檔案不會被解析)
  • 透過 airflow info 查出 Dags 資料夾位置

airflow info 的終端機輸出,反白顯示 dags_folder 路徑

Python 中的 Apache Airflow 入門

語法錯誤

  • Dag 檔案不出現的最常見原因
  • Dag 內的錯誤有時不易發現
  • 三個快速方法:

    • 在 Airflow UI 檢查錯誤彈窗

    • 執行 airflow dags list-import-errors

    • 執行 python3 <dagfile.py>

Python 中的 Apache Airflow 入門

Airflow UI 匯入錯誤

Airflow 歡迎頁面顯示 Dag 匯入錯誤警示

Airflow 匯入錯誤詳細資訊,顯示 Dag 的追蹤訊息

Python 中的 Apache Airflow 入門

airflow dags list-import-errors

airflow dags list-import-errors 的終端機輸出,顯示一則錯誤

Python 中的 Apache Airflow 入門

airflow dags reserialize

  • Dag 變更可能不會立即出現
  • 預設情況下,Airflow 每 5 分鐘檢查一次 Dag 更新
  • 可用 airflow dags reserialize 強制重新檢查

終端機執行 airflow dags reserialize 以強制刷新 Dag

Python 中的 Apache Airflow 入門

執行 Python 直譯器

python3 dagfile.py

  • 有錯誤

以 python3 執行 Dag 檔案時顯示 Python 語法錯誤的終端機畫面

  • 無錯誤

以 python3 執行 Dag 檔案無錯誤後回到提示字元的終端機畫面

Python 中的 Apache Airflow 入門

一起來練習吧!

Python 中的 Apache Airflow 入門

Preparing Video For Download...