Airflow 相同的 dag 在不同时间运行笔记本代码

问题描述 投票:0回答:1

气流新手: 我需要从我的应用程序 dag 运行笔记本代码,该代码目前计划在美国地区太平洋标准时间凌晨 5 点运行。但我想扩展到更多的国家/地区,并且笔记本代码需要在该特定国家/地区的当地时间凌晨 5 点运行。

例如

对于英国,请在 UTC 时间凌晨 5 点运行笔记本 - 同时将英国特定参数传递给笔记本

对于 JP,请在日本标准时间上午 5 点运行笔记本 - 同时将 JP 特定参数传递给笔记本

关于如何做到这一点有什么想法吗?我们可以传递多个

schedule_interval
吗?不确定如何将参数与同一 dag 中每个区域的运行相关联。预先感谢。

python jupyter-notebook airflow
1个回答
0
投票

“该国家/地区当地时间上午 5 点”的概念有点微妙, 因为 UTC 偏移量偶尔会发生变化。 例如,许多地方每年都有一对一小时的夏令时轮班。 您提到英国的“UTC”, 但如果你看看伦敦人的手表 有时你会发现距离那个时间还有一个小时。

我们可以传递多个

schedule_interval
吗?

我想 Airflow 可能能够胜任这项任务。 但这听起来有点难,所以这是我的建议。

您有几个想要定期运行的源代码文件。 将(非数字!)时区字符串与每个文件关联, 例如

"Americas/Los_Angeles"

每小时整点运行一次 Airflow 任务。 首先它指定

now
为系统时间。 接下来它扫描那些时区字符串, 将
now
转换为当地时区并提取当前
hour
。 如果
hour
5
那么我们运行相关的代码。

在您的示例中,任务实际上会运行关联代码 3 次 24 人被处决。在剩下的 21 次处决中,它将迅速 执行扫描,找到零个准备好的候选者,然后立即退出。

这种方法的一个优点是它可以正确处理 DST 转换, 使用每个相关城市当前的每个区域设置规则。

© www.soinside.com 2019 - 2024. All rights reserved.