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