在 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 点)。请帮助我为此安排适当的时间。
感谢任何帮助。
你基本上有两个选择:
- 更改系统范围的时区。
- 了解您的 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]>
我有一个以 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 点)。请帮助我为此安排适当的时间。
感谢任何帮助。
你基本上有两个选择:
- 更改系统范围的时区。
- 了解您的 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]>