airflow - 在时区感知 DAG 中,next_ds 在夏令时期间的行为是否正确?
问题描述
我正在运行一个时区感知 DAG(tz=Europe/London),其时间表为0 0 * * 1-5
.
在星期五的运行中,2020-03-27
,next_ds
设置为2020-03-29
。但是,根据时间表,我本来预计会是2020-03-30
.
间隔包含夏令时跳过 - 是否可能next_ds
没有正确考虑到这一点?还是对这种行为有不同的解释?
解决方案
原来我应该阅读手册 - 在https://airflow.apache.org/docs/stable/timezone.html它说
Airflow 在模板中返回时区感知日期时间,但不会将它们转换为本地时间,因此它们保持在 UTC 中。由 DAG 来处理这个问题。
我现在正在使用 jinja 过滤器解决这个问题,定义
def local_ds(execution_date):
return execution_date.in_timezone(local_tz).strftime('%Y-%m-%d')
然后{{ execution_date | local_ds }}
在模板内部使用。
我想这对使用时区工作的人来说尤其如此Europe/London
,因为当地时间的午夜是冬季的 UTC 的午夜,但在夏季,它在 UTC 的前一天变成了 23:00,因此更改了日期。
推荐阅读
- python-3.x - 服务器到客户端多线程 Python
- java - 按整数计数分组
- python - 多个结构中断 - Bai Perron 测试 - Python
- r - Pmap over tidyeval 函数
- python - Python opencv/cvzone - UnboundLocalError
- python - 使用 pylas 创建 .las 文件时如何更新地理位置?
- python - 有没有办法将数组格式的字典列表转换为数据框中的单个列?
- python - “-inf”在python中是什么意思?
- python-3.x - 通过有选择地从相邻列中提取值作为 dict 键值对并遍历 df 的列来创建 dicts 列表
- java - 为什么我的 Android 应用程序只在某个片段中崩溃?