Airflow 峰會 2025 將於 10 月 07-09 日舉行。立即註冊享受早鳥票優惠!

本地執行器

LocalExecutor 透過以受控方式在不同模式下生成程序來執行任務。

鑑於 BaseExecutor 可以選擇接收一個 parallelism 引數來限制生成的程序數量,當此引數為 0 時,LocalExecutor 可以生成的程序數量是無限的。

實現了以下策略

  • 無限並行 (self.parallelism == 0):在此策略中,LocalExecutor 將會
    每次呼叫 execute_async 時生成一個程序,也就是說,提交給
    LocalExecutor 的每個任務都將在自己的程序中執行。任務執行完成後,
    結果儲存在 result_queue 中,程序隨即終止。這種方法無需使用
    task_queue,因為一旦接收到任務,就會為其分配一個新的程序。
    在此策略中使用的程序屬於 LocalWorker 類。
  • 有限並行 (self.parallelism > 0):在此策略中,LocalExecutor 會在
    start 時生成數量等於 self.parallelism 值的程序數量,
    並使用 task_queue 來協調任務的接收和工作在
    工作程序之間的分配,工作程序一旦準備好就會領取任務。在 LocalExecutor 的生命週期內,
    工作程序持續執行等待任務,一旦
    LocalExecutor 接收到關閉執行器的呼叫,就會向工作程序傳送一個“毒丸”令牌 (poison token) 以終止它們。
    在此策略中使用的程序屬於 QueuedLocalWorker 類。

注意

在 `airflow.cfg` 檔案的 `[core]` 部分,當配置多個 Scheduler 並將 executor = LocalExecutor 時,每個 Scheduler 都會執行一個 LocalExecutor。這意味著任務將在執行 Scheduler 的機器之間以分散式方式處理。

應考慮以下一點

  • 重啟 Scheduler:如果一個 Scheduler 重啟,其他 Scheduler 可能需要一些時間來識別孤立(orphaned)任務並重啟或使它們失敗。

這篇文章有幫助嗎?