1. 程式人生 > >Airflow 中文文件:常見問題

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定義了允許DAG running任務例項的數量,超過這一點,事物就會排隊。
  • 是否達到了DAG的max_active_runs引數? max_active_runs定義允許的DAG running併發例項的數量。

您可能還想閱讀文件的“計劃程式”部分,並確保完全瞭解其進度。

如何根據其他任務的失敗觸發任務?

檢視文件“概念Trigger Rule部分中的“ Trigger Rule部分

安裝airflow [crypto]後,為什麼連線密碼仍未在元資料db中加密?

檢視文件“配置”部分中的“ Connections部分

閱讀全文/改進本文