本地执行器

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 可以被认为是仅具有 1 个工作器的有限并行性的 LocalExecutor,即 self.parallelism = 1。此选项可以将本地运行的执行器实现统一到仅具有多种模式的 LocalExecutor 中。

注意

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

应考虑一个因素

  • 重新启动调度程序:如果重新启动调度程序,其他调度程序可能需要一些时间才能识别孤立的任务并重新启动或使它们失败。

此条目是否有用?