Amazon web services 任务重试未完成

Amazon web services 任务重试未完成,amazon-web-services,scheduled-tasks,airflow,Amazon Web Services,Scheduled Tasks,Airflow,我有一个生产环境,在AWS上的docker实例中运行Airflow webserver/scheduler 我正在使用AWS蓝色/绿色部署,以实现始终工作的服务 当我通过AWS Codepipeline进行新部署时,AWS B/G在EC2中引发一个新的docker实例,然后丢弃旧实例。完成此操作后,正在运行的任务将失败 据我所知,这是由于计划程序和Web服务器之间的连接造成的,但尽管有重试=2,但它只会失败,并且不会重新启动。另一方面,当任务由于某些错误而失败时,它会很好地重试 我的dags参数

我有一个生产环境,在
AWS
上的
docker
实例中运行
Airflow webserver/scheduler

我正在使用AWS蓝色/绿色部署,以实现始终工作的服务

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

据我所知,这是由于
计划程序
Web服务器
之间的连接造成的,但尽管有
重试=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
}

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

  • 停止blue Deployment上的计划程序,以避免安排新任务
  • 等待所有任务/DAG完成或终止任务
  • 继续部署绿色
  • 您还可以使用以下选项,该选项还应将特定时间后的任务标记为失败:

    执行\u超时(datetime.timedelta)–执行此任务实例所允许的最大时间,如果超出此时间,将引发并失败


    谢谢@PhilippJohannis。我将调查如何做到这一点