我有一个控制器 DAG (SampleController),它将调用一个目标 DAG (SampleWait),两者的 start_date 为 datetime.now(),schedule_interval 为 None。
我从命令行或网络服务器 UI 触发了控制器 DAG,它会立即运行,并且在我的系统时区中执行日期为“现在”。在屏幕截图中,是 17:25——这不是我的“真实”UTC 时间;这是我的当地时间。
但是,当为目标创建触发的 DAG 运行时,执行日期将“调整”为 UTC 时间,无论我如何尝试操作 start_date - 它总是在未来(此处为 21:25)。就我而言,它是未来的四个小时,所以目标 DAG 只是坐在那里无所事事。我实际上在控制器中有一个传感器,它等待目标 DAG 完成,所以那个人也会无缘无故地进行轮询。
即使是 Github 中的 Controller-Target 模式示例,在我运行它们时也表现出完全相同的行为,而且我找不到任何关于如何实际处理此问题的适当文档,只是它是一个“陷阱”。
奇怪的是,Airflow 似乎知道我的时区并在一个操作员内进行调整,但当我从命令行或 Web 服务器 UI 进行调整时却没有。
是什么赋予了?