amazon-web-services - 气流任务重试未完成
问题描述
我有一个生产环境,Airflow webserver/scheduler
在.docker
AWS
我正在使用 AWS Blue/Green 部署来实现始终有效的服务。
当我通过 进行新部署时AWS Codepipeline
,会在 中AWS B/G
引发一个新docker
实例EC2
,然后删除旧实例。完成此操作后,正在运行的任务将失败。
我知道这是由于 and 之间的连接scheduler
,webserver
但尽管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
}
解决方案
我想您的部署解决方案如下:
- 在蓝色部署时停止调度程序以避免安排新任务
- 等到所有任务/DAG 完成或终止任务
- 继续部署绿色
您也可以使用execution_timeout
which 也应该在一段时间后将任务标记为失败:
execution_timeout (datetime.timedelta) - 允许执行此任务实例的最长时间,如果超过它将引发和失败。
推荐阅读
- graphql - 服务工作者,缓存图形查询请求
- reactjs - React 错误“无法在未安装的组件上执行 React 状态更新。这是一个无操作,但它表示内存泄漏”
- php - SugarCRM:自定义逻辑挂钩
- reactjs - 如何在不同的组件上使用相同的 handleChange 事件
- javascript - NodeJS with MySQL - 从数组中向 SQL 插入多行的最佳方法
- python - python lxml添加/修改/替换html元素的innerHTML
- typescript - TypeScript / Vue 3:注入变异函数会导致 TypeScript 错误“对象属于‘未知’类型”
- java - java.nio.file.FileSystemException 进程无法访问该文件,因为它正被另一个进程使用
- c++ - 在 C++ 中的函数调用中解包数组
- php - NGINX - WORDPRESS - PHP-FPM:查询参数(GET)未传入子文件夹