疑難排解¶
不明的任務失敗¶
任務狀態在外部變更¶
任務的狀態可能因執行器以外的組件而變更,這在檢閱任務實例或排程器日誌時可能會造成一些混淆,原因有很多。
以下是一些可能導致任務狀態由執行器以外的組件變更的範例情境
如果任務的 DAG 在 worker 上解析失敗,排程器可能會將任務標記為失敗。如果確認,請考慮增加 core.dagbag_import_timeout 和 core.dag_file_processor_timeout。
如果任務在佇列中等待的時間超過 scheduler.task_queued_timeout,排程器會將任務標記為失敗。
如果任務變成殭屍任務,則會被排程器標記為失敗。
使用者在 Airflow UI 中將任務標記為成功或失敗。
外部腳本或程序使用Airflow REST API 來變更任務的狀態。
LocalTaskJob 被終止¶
有時,Airflow 或某些相鄰系統會終止任務實例的 LocalTaskJob
,導致任務實例失敗。
以下是一些可能導致此類事件的範例
DAG 執行逾時,由 DAG 定義中的
dagrun_timeout
指定。Airflow worker 記憶體不足 - 通常,記憶體不足的 Airflow worker 會收到 SIGKILL 並被標記為殭屍任務並由排程器標記為失敗。但是,在某些情況下,Airflow 會在發生這種情況之前終止任務。