在不完全重新启动的情况下将代码部署到Airflow

在不完全重新启动的情况下将代码部署到Airflow,airflow,Airflow,我有一个芹菜apache气流设置,在EC2实例上有一个工作节点。对于代码部署,用户触发部署,将代码包复制到s3;一些与infra相关的脚本将代码包从s3复制到实例上;该实例触发所有与气流相关的服务的重新启动 我希望这样,每当我需要修改代码时,理想情况下,当前正在运行的任何作业都应该继续运行,而不使用集群设置 我在想,也许可以找到一种方法,在不重新启动worker的情况下重新启动web服务器和调度程序,就可以解决这个问题。根据我在LocalExecutor中使用气流的经验,只需更改 DAG定义文

我有一个芹菜apache气流设置,在EC2实例上有一个工作节点。对于代码部署,用户触发部署,将代码包复制到s3;一些与infra相关的脚本将代码包从s3复制到实例上;该实例触发所有与气流相关的服务的重新启动

我希望这样,每当我需要修改代码时,理想情况下,当前正在运行的任何作业都应该继续运行,而不使用集群设置


我在想,也许可以找到一种方法,在不重新启动worker的情况下重新启动web服务器和调度程序,就可以解决这个问题。

根据我在
LocalExecutor
中使用
气流
的经验,只需更改

  • DAG定义文件(可能修改DAG的结构)
  • 操作员代码
  • DAG/任务的输入(,
    连接
    s)
不需要重新启动气流服务(
webserver
scheduler


  • 只有当您更改DAG的调度参数时,即
    开始日期
    调度间隔
    ,才会
  • 我读过一些建议,如果我不想重命名我的DAG,重新启动
    aiffair
    服务也可以做到这一点。但我发现这种说法不一致(并不总是有效)

请注意,上述事实与
LocalExecutor
有关,对于
CeleryExecutor

------------------------------------------------------------------------------ 但是,对于
调度程序
调度程序
(以及几乎所有长时间运行的进程),它必须不时重新启动

应经常重新启动计划程序

根据我们的经验,长期 运行调度程序进程,至少使用CeleryExecutor,结果是 没有安排一些任务。我们还不知道确切的原因, 不幸的是。幸运的是,气流在空气中有一个内置的解决方法 -num_runs标志的形式。它指定了一系列的迭代次数 调度程序将在退出之前运行其循环的所有部分。我们正在运行它 Airbnb在10次迭代中运行了5次。请注意,这将导致 使用LocalExecutor时出现问题


上述文章来自2015年,根据我在
中使用
气流
的经验,不确定自那时以来情况是否发生了变化,只是改变了

  • DAG定义文件(可能修改DAG的结构)
  • 操作员代码
  • DAG/任务的输入(,
    连接
    s)
不需要重新启动气流服务(
webserver
scheduler


  • 只有当您更改DAG的调度参数时,即
    开始日期
    调度间隔
    ,才会
  • 我读过一些建议,如果我不想重命名我的DAG,重新启动
    aiffair
    服务也可以做到这一点。但我发现这种说法不一致(并不总是有效)

请注意,上述事实与
LocalExecutor
有关,对于
CeleryExecutor

------------------------------------------------------------------------------ 但是,对于
调度程序
调度程序
(以及几乎所有长时间运行的进程),它必须不时重新启动

应经常重新启动计划程序

根据我们的经验,长期 运行调度程序进程,至少使用CeleryExecutor,结果是 没有安排一些任务。我们还不知道确切的原因, 不幸的是。幸运的是,气流在空气中有一个内置的解决方法 -num_runs标志的形式。它指定了一系列的迭代次数 调度程序将在退出之前运行其循环的所有部分。我们正在运行它 Airbnb在10次迭代中运行了5次。请注意,这将导致 使用LocalExecutor时出现问题

上面的文章是2015年的,不确定自那以后情况是否发生了变化