Airflow 中文文件:常見問題
為什麼我的任務沒有安排好?
您的任務可能無法安排的原因有很多。 以下是一些常見原因:
-
您的指令碼是否“編譯”,Airflow引擎是否可以解析它並找到您的DAG物件。 要對此進行測試,您可以執行
airflow list_dags
並確認您的DAG顯示在列表中。 您還可以執行airflow list_tasks foo_dag_id --tree
並確認您的任務按預期顯示在列表中。 如果您使用CeleryExecutor,您可能需要確認這既適用於排程程式執行的位置,也適用於工作程式執行的位置。 - 包含DAG的檔案是否在內容的某處包含字串“airflow”和“DAG”? 在搜尋DAG目錄時,Airflow忽略不包含“airflow”和“DAG”的檔案,以防止DagBag解析匯入與使用者的DAG並置的所有python檔案。
-
你的
start_date
設定正確嗎? 在傳遞start_date + scheduler_interval
之後,Airflow排程程式會立即觸發任務。 -
您的
schedule_interval
設定正確嗎? 預設schedule_interval
是一天(datetime.timedelta(1)
)。 您必須直接為例項化的DAG物件指定不同的schedule_interval
,而不是default_param
,因為任務例項不會覆蓋其父DAG的schedule_interval
。 -
您的
start_date
超出了在UI中可以看到的位置嗎? 如果將start_date
設定為3個月之前的某個時間,您將無法在UI的主檢視中看到它,但您應該能夠在Menu -> Browse ->Task Instances
看到它。 -
是否滿足任務的依賴性。 直接位於任務上游的任務例項需要處於
success
狀態。 此外,如果已設定depends_on_past=True
,則上一個任務例項需要成功(除非它是該任務的第一次執行)。 此外,如果wait_for_downstream=True
,請確保您瞭解其含義。 您可以從Task Instance Details
頁面檢視如何設定這些屬性。 -
您需要建立並激活DagRuns嗎? DagRun表示整個DAG的特定執行,並具有狀態(執行,成功,失敗,......)。 排程程式在向前移動時建立新的DagRun,但永遠不會及時建立新的DagRun。 排程程式僅評估
running
DagRuns以檢視它可以觸發的任務例項。 請注意,清除任務例項(從UI或CLI)確實將DagRun的狀態設定為恢復執行。 您可以通過單擊DAG的計劃標記來批量檢視DagRuns列表並更改狀態。 -
是否達到了DAG的
concurrency
引數?concurrency
定義了允許DAGrunning
任務例項的數量,超過這一點,事物就會排隊。 -
是否達到了DAG的
max_active_runs
引數?max_active_runs
定義允許的DAGrunning
併發例項的數量。
您可能還想閱讀文件的“計劃程式”部分,並確保完全瞭解其進度。
如何根據其他任務的失敗觸發任務?
檢視文件“概念Trigger Rule
部分中的“Trigger Rule
部分
安裝airflow [crypto]後,為什麼連線密碼仍未在元資料db中加密?
檢視文件“配置”部分中的“Connections
部分
ofollow,noindex"> 閱讀全文/改進本文