本地执行器

LocalExecutor 通过在调度器节点上受控地生成进程来运行任务。

参数 parallelism 限制生成的进程数量,以免使节点超负荷。此参数必须大于 0

LocalExecutorstart 时会生成数量等于 self.parallelism 的进程,使用 task_queue 协调任务的摄取以及在工作进程之间的工作分配,工作进程在准备就绪后会立即获取任务。在 LocalExecutor 的整个生命周期内,工作进程持续运行并等待任务;一旦 LocalExecutor 收到关闭执行器的调用,就会向工作进程发送毒性令牌以终止它们。

工作进程的生成行为取决于 multiprocessing 的启动方式

  • Fork mode(Linux 上的默认方式):一次性生成至多 parallelism 个工作进程,以防止写时复制(Copy‑on‑Write,COW)导致的内存峰值。详情请参阅 讨论

  • Spawn mode(macOS 与 Windows 上的默认方式):根据需要一次生成一个工作进程,以避免同时生成大量进程带来的开销。

注意

parallelism 参数可通过 airflow.cfg 中的 [core] parallelism 选项进行配置。默认值为 32

警告

由于 LocalExecutor 的工作进程是作为调度器的子进程生成的,在容器化环境中这可能表现为调度器进程的内存占用异常增大,进而可能因 OOM(内存不足)导致容器重启。请根据容器的资源上限酌情调整 parallelism 的取值。

注意

当在 airflow.cfg[core] 部分将 executor=LocalExecutor 配置到多个调度器时,每个调度器都会运行一个 LocalExecutor。这意味着任务将在运行调度器的机器之间以分布式方式被处理。

需要考虑的一点是

  • 重启调度器:如果调度器被重启,其他调度器识别到孤立任务并重新启动或标记失败可能需要一定时间。

注意

Airflow 早期版本提供将 LocalExecutor 配置为无限并行(self.parallelism = 0)的选项。该选项已在 Airflow 3.0.0 中移除,以免让调度器节点超负荷。

此条目是否有帮助?