在 EST 时区安排 DAG - Airflow

Scheduling a DAG in EST time zone - Airflow

我有一个以 UTC 作为时区的气流调度程序。我想根据 EST 时间安排 DAG。这里的问题是我想将我的 DAG 安排到 运行 从美国东部标准时间每周一到周五下午 6 点到晚上 9 点。将 EST 转换为 UTC 下午 6 点变成晚上 10 点,晚上 9 点变成第二天凌晨 1 点。

我尝试给出基于 UTC 的 crontab 表达式 - '0 10-23,1 * * MON-FRI' 但由于时区不同,我的 DAG 将跳过 运行 周五上午 0 点至凌晨 1 点(东部标准时间晚上 8 点至晚上 9 点)。请帮助我为此安排适当的时间。

感谢任何帮助。

你基本上有两个选择:

  1. 更改系统范围的时区。
  2. 了解您的 DAG 时区。

1。更改系统范围的时区

在您的 airflow.cfg 中,您可以定义调度时区。 例如,对于阿姆斯特丹,它将是:

[core]
default_timezone = Europe/Amsterdam

这会将完整的气流安装设置为根据阿姆斯特丹时间安排。

2。让您的 DAG 时区感知

如果您提供时区感知的 start_date,它将使用该时区来跟踪夏令时 mentioned here。 下面的例子直接复制自the airflow documentation 并说明了如何让您的 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]>