首页 > 解决方案 > 气流任务重试未完成

问题描述

我有一个生产环境,Airflow webserver/scheduler在.dockerAWS

我正在使用 AWS Blue/Green 部署来实现始终有效的服务。

当我通过 进行新部署时AWS Codepipeline,会在 中AWS B/G引发一个新docker实例EC2,然后删除旧实例。完成此操作后,正在运行的任务将失败。

我知道这是由于 and 之间的连接schedulerwebserver但尽管retry=2它只是失败并且没有完成重启。另一方面,当任务由于某些错误而失败时,它会重试。

我的 dags 参数是:

default_args = {
    'owner': 'I',
    'depends_on_past': False,
    'start_date': datetime(2020, 11, 1),
    'email': [' '],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 2,
    'retry_delay': timedelta(minutes=15),
    'on_failure_callback': slack_alert
}

标签: amazon-web-servicesscheduled-tasksairflow

解决方案


我想您的部署解决方案如下:

  1. 在蓝色部署时停止调度程序以避免安排新任务
  2. 等到所有任务/DAG 完成或终止任务
  3. 继续部署绿色

您也可以使用execution_timeoutwhich 也应该在一段时间后将任务标记为失败:

execution_timeout (datetime.timedelta) - 允许执行此任务实例的最长时间,如果超过它将引发和失败。


推荐阅读