气流新手: 我需要从我的应用程序 dag 运行笔记本代码,该代码目前计划在美国地区太平洋标准时间凌晨 5 点运行。但我想扩展到更多的国家/地区,并且笔记本代码需要在该特定国家/地区的当地时间凌晨 5 点运行。
例如
对于英国,请在 UTC 时间凌晨 5 点运行笔记本 - 同时将英国特定参数传递给笔记本
对于 JP,请在日本标准时间上午 5 点运行笔记本 - 同时将 JP 特定参数传递给笔记本
关于如何做到这一点有什么想法吗?我们可以传递多个
schedule_interval
吗?不确定如何将参数与同一 dag 中每个区域的运行相关联。预先感谢。
“该国家/地区当地时间上午 5 点”的概念有点微妙, 因为 UTC 偏移量偶尔会发生变化。 例如,许多地方每年都有一对一小时的夏令时轮班。 您提到英国的“UTC”, 但如果你看看伦敦人的手表 有时你会发现距离那个时间还有一个小时。
我们可以传递多个
吗?schedule_interval
我想 Airflow 可能能够胜任这项任务。 但这听起来有点难,所以这是我的建议。
您有几个想要定期运行的源代码文件。 将(非数字!)时区字符串与每个文件关联, 例如
"Americas/Los_Angeles"
。
每小时整点运行一次 Airflow 任务。 首先它指定
now
为系统时间。
接下来它扫描那些时区字符串,
将 now
转换为当地时区并提取当前 hour
。
如果 hour
是 5
那么我们运行相关的代码。
在您的示例中,任务实际上会运行关联代码 3 次 24 人被处决。在剩下的 21 次处决中,它将迅速 执行扫描,找到零个准备好的候选者,然后立即退出。
这种方法的一个优点是它可以正确处理 DST 转换, 使用每个相关城市当前的每个区域设置规则。