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)任务并重启或使它们失败。

这篇文章有帮助吗?