本地执行器

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 收到关闭执行器的调用,就会向
    工作进程发送毒药令牌以终止它们。 此策略中使用的进程是 QueuedLocalWorker 类。

可以说,SequentialExecutor 可以被认为是只有一个工作进程的有限并行性的 LocalExecutor,即 self.parallelism = 1。 此选项可能会导致将本地运行的执行器实现统一为一个具有多种模式的 LocalExecutor

注意

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

应考虑以下事项

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

此条目是否有帮助?