cron - 在 EST 时区调度 DAG - Airflow
问题描述
我有一个气流调度程序,它的时区为 UTC。我想根据 EST 时间安排 DAG。这里的问题是我想安排我的 DAG 在每个周一至周五的东部标准时间下午 6 点到晚上 9 点运行。将 EST 转换为 UTC 下午 6 点变成了晚上 10 点,晚上 9 点变成了第二天的凌晨 1 点。
我尝试根据 UTC - '0 10-23,1 * * MON-FRI'给出 crontab 表达式,但由于时区不同,我的 DAG 将跳过周五上午 0 点到凌晨 1 点(美国东部标准时间晚上 8 点到 9 点)的运行。请帮助我为此进行适当的安排。
任何帮助表示赞赏。
解决方案
你基本上有两个选择:
- 更改系统范围的时区。
- 让您了解 DAG 时区。
1.更改系统范围的时区
在您的airflow.cfg
中,您可以定义调度时区是什么。例如,对于阿姆斯特丹,它将是:
[core]
default_timezone = Europe/Amsterdam
这将根据阿姆斯特丹时间安排完整的气流安装。
2. 让你的 DAG 时区感知
如果您提供start_date
时区感知的,它将使用该时区来跟踪夏令时,如此处所述。以下示例直接从气流文档中复制而来,
并说明了如何让您的 DAG timeozne 感知。
import pendulum
local_tz = pendulum.timezone("Europe/Amsterdam")
default_args=dict(
start_date=datetime(2016, 1, 1, tzinfo=local_tz),
owner='airflow'
)
dag = DAG('my_tz_dag', default_args=default_args)
op = DummyOperator(task_id='dummy', dag=dag)
print(dag.timezone) # <Timezone [Europe/Amsterdam]>
推荐阅读
- javascript - 如何为 Google 地图创建“大小圆圈”图例
- mysql - 连接返回空
- flutter - InheritedWidget 无法从新路由访问
- opencl - 在 OpenCL 中,为什么我要为每台英特尔设备提供一个平台?
- c# - 如何知道 CalendarViewDayItem 超出 CalendarView 月份范围?
- python-3.x - 我如何遍历列表并使用 simplekml 创建/添加到 kml?
- excel - 如何在 VBA 上按标题名称选择特定列,并在其他操作(删除重复项、自动过滤器)中使用所选列
- r - 由于使用 googleVis 函数编码探针而导致显示不正确
- sql - 用 FIRSTVALUE()/LAST_VALUE() 分组
- nuget - 找不到nuget文件夹