本地執行器

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

鑑於 BaseExecutor 可以選擇接收 parallelism 參數以限制產生的進程數量,當此參數為 0 時,LocalExecutor 可以產生的進程數量不受限制。

以下策略已實作

  • 無限並行處理 (self.parallelism == 0):在此策略中,LocalExecutor 將
    在每次呼叫 execute_async 時產生一個進程,也就是說,提交給
    LocalExecutor 的每個任務都將在其自己的進程中執行。一旦任務執行且
    結果儲存在 result_queue 中,進程就會終止。在此方法中,不需要
    task_queue,因為一旦收到任務,就會為任務分配一個新的進程。
    此策略中使用的進程屬於 LocalWorker 類別。
  • 有限並行處理 (self.parallelism > 0):在此策略中,LocalExecutor 會產生
    等於 self.parallelism 值的進程數量 (在 start 時),
    使用 task_queue 來協調任務的攝取和工作分配給
    工作者,工作者會在準備就緒後立即取得任務。在
    LocalExecutor 的生命週期中,工作者進程會持續執行並等待任務,一旦
    LocalExecutor 收到關閉執行器的呼叫,就會將毒藥令牌傳送給
    工作者以終止它們。此策略中使用的進程屬於 QueuedLocalWorker 類別。

可以說,SequentialExecutor 可以被認為是 LocalExecutor,其並行處理能力有限,只有 1 個工作者,即 self.parallelism = 1。此選項可能會導致將本地執行的執行器實作統一為單一 LocalExecutor,並具有多種模式。

注意

當多個排程器在 airflow.cfg[core] 區段中配置 executor = LocalExecutor 時,每個排程器都會執行一個 LocalExecutor。這表示任務將在執行排程器的機器之間以分散式方式處理。

應考慮一個注意事項

  • 重新啟動排程器:如果重新啟動排程器,其他排程器可能需要一些時間才能識別孤立任務並重新啟動或使其失敗。

此條目是否有幫助?