在多个时区的固定时间安排任务

Schedule tasks at fixed time in multiple timezones

我刚开始使用 Airflow,我不确定如何解决这个问题:

我正在构建一个数据导出系统,该系统应该 运行 在每天固定的时间针对不同的位置。我的问题是这些地点有多个时区,日期 start/end 的定义会根据时区而变化。

我在文档中看到我可以让 dag 时区感知,但我不确定创建 100 个具有不同时区的 dag 是正确的方法。我还有一些常见任务,因此多个 dag 会在执行的任务中产生更多的复杂性或重复。

是否有气流惯用的方法来实现这一点?我认为构建依赖于时区的报告是一个相当常见的用例,但我没有找到任何相关信息。

动态 DAG 是 Airflow 中的热门话题,但在我看来,Airflow 本身并没有提供直接的实现方式。您需要根据您的用例权衡利弊。

作为一个很好的起点,您可以检查 Astronomer guide for dynamically generating DAGs. There you have all the options available and some ideas of the pros and cons. Make sure you check out the scalability considerations 以了解性能方面的影响。

根据您的用例,我认为最好的方法是 Create_DAG 方法(在 Single-File Methods), or the DAG Factory 下)。我个人更喜欢第一个,因为它就像一个工厂(就编程模式而言),但你可以灵活地为每个 DAG 创建你需要的所有文件。在第二个中你将无法控制你创建的内容并且需要外部依赖。

另一篇关于动态生成 DAG 的有趣文章是 "How to build a DAG Factory on Airflow"