我不明白为什么我们需要操作员(任务实例)的“开始日期”。我们传递给 DAG 的那个不就足够了吗?
此外,如果当前时间是 2018 年 2 月 7 日上午 8 点 30 点 UTC,现在我将 dag 的 start_date 设置为 2018 年 2 月 7 日上午 0 点,我的计划间隔的 cron 表达式为 30 9 * * *(每天上午 9 点 30 分,即期待在接下来的 1 小时内运行)。我的 DAG 会在今天上午 9 点 30 分还是明天(2 月 8 日上午 9 点 30 分)运行?
我不明白为什么我们需要操作员(任务实例)的“开始日期”。我们传递给 DAG 的那个不就足够了吗?
此外,如果当前时间是 2018 年 2 月 7 日上午 8 点 30 点 UTC,现在我将 dag 的 start_date 设置为 2018 年 2 月 7 日上午 0 点,我的计划间隔的 cron 表达式为 30 9 * * *(每天上午 9 点 30 分,即期待在接下来的 1 小时内运行)。我的 DAG 会在今天上午 9 点 30 分还是明天(2 月 8 日上午 9 点 30 分)运行?
关于任务实例的 start_date,我个人从未使用过它,我总是只有一个 DAG start_date。
但是,据我所知,这将允许您指定某些任务在与主 DAG 不同的时间开始。看来这是一项遗留功能,并且通过阅读常见问题解答,他们建议使用时间传感器来代替这种类型的事物,并且只为通过 DAG 传递的所有任务设置一个 start_date。
你的第二个问题:
运行的执行日期始终是基于您的计划的上一个期间。
来自文档(气流文档)
请注意,如果您在一天的 schedule_interval 上运行 DAG,则标记为 2016-01-01 的运行将在 2016-01-01T23:59 之后不久触发。换句话说,作业实例在其涵盖的时间段结束后启动。
澄清:
一些复杂的需求可能需要任务级别的特定时间安排。例如,我可能希望我的 DAG 在某个聚合日志记录任务开始运行之前每天运行一整周,因此为了实现这一点,我可以在任务级别设置不同的开始日期。
更有用的信息...查看气流DAG
类源,在 DAG 级别设置似乎只是意味着当任务 start_date 的默认值没有通过字典start_date
传递给 DAG 时,它被传递给任务,或者default_args
当没有start_date
在每个任务级别上定义具体内容时。因此,对于您希望 DAG 中的所有任务同时启动(除了依赖项)的任何情况,start_date
在 DAG 级别进行设置就足够了。
只是添加到这里已经存在的内容。依赖于另一个任务的任务的开始日期必须 >= 到其依赖项的开始日期。
它可能不会按照以下说明设置任务的 dag 参数: https ://stackoverflow.com/a/61749549/1743724