Apache Airflow 中的开始日期和预定日期有问题
Problem with start date and scheduled date in Apache Airflow
我正在 Apache Airflow 工作,我对预定日期和开始日期有疑问。
我想要每天 8:00 AM UTC 的 DAG 到 运行。所以,我做了:
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2020, 12, 7, 10, 0,0),
'email': ['example@emaiil.com'],
'email_on_failure': True,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(hours=5)
}
# Never run
dag = DAG(dag_id='id', default_args=default_args, schedule_interval='0 8 * * *',catchup=True)
我上传 DAG 的那天是 2020 年 12 月 7 日,我想 运行 在 2020 年 12 月 8 日 08:00:00 上传。
我将 start_date 设置为 2020-12-07 的 10:00:00 以避免 运行 在 2020-12-07 的 08:00:00 将其设置为 运行 并且第二天才触发,没用
然后我修改了起始日期:
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2020, 12, 7, 7, 59,0),
'email': ['example@emaiil.com'],
'email_on_failure': True,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(hours=5)
}
# Never run
dag = DAG(dag_id='etl-ca-cpke-spark_dev_databricks', default_args=default_args, schedule_interval='0 8 * * *',catchup=True)
现在开始日期比 DAG 应该 运行 早 1 分钟,事实上,因为追赶设置为 True,DAG 已在 2020-12-07 08:00:00,但在 2020-12-08 08:00:00.
没有被触发
为什么?
Airflow 在间隔 (See documentation reference)
的 end 安排任务
意思是当你这样做时:
start_date: datetime(2020, 12, 7, 8, 0,0)
schedule_interval: '0 8 * * *'
第一个 运行 将在 08:00
+- 2020-12-08
开始(取决于资源)
这个 运行 的 execution_date
将是:2020-12-07 08:00
下一个 运行 将在 2020-12-09
08:00
开始
这个 运行 的 execution_date
的 2020-12-08 08:00
。
由于今天是 2020-12-08
,下一个 运行 没有开始,因为它还不是间隔的 结束 。
我正在 Apache Airflow 工作,我对预定日期和开始日期有疑问。
我想要每天 8:00 AM UTC 的 DAG 到 运行。所以,我做了:
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2020, 12, 7, 10, 0,0),
'email': ['example@emaiil.com'],
'email_on_failure': True,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(hours=5)
}
# Never run
dag = DAG(dag_id='id', default_args=default_args, schedule_interval='0 8 * * *',catchup=True)
我上传 DAG 的那天是 2020 年 12 月 7 日,我想 运行 在 2020 年 12 月 8 日 08:00:00 上传。
我将 start_date 设置为 2020-12-07 的 10:00:00 以避免 运行 在 2020-12-07 的 08:00:00 将其设置为 运行 并且第二天才触发,没用
然后我修改了起始日期:
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2020, 12, 7, 7, 59,0),
'email': ['example@emaiil.com'],
'email_on_failure': True,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(hours=5)
}
# Never run
dag = DAG(dag_id='etl-ca-cpke-spark_dev_databricks', default_args=default_args, schedule_interval='0 8 * * *',catchup=True)
现在开始日期比 DAG 应该 运行 早 1 分钟,事实上,因为追赶设置为 True,DAG 已在 2020-12-07 08:00:00,但在 2020-12-08 08:00:00.
没有被触发为什么?
Airflow 在间隔 (See documentation reference)
的 end 安排任务意思是当你这样做时:
start_date: datetime(2020, 12, 7, 8, 0,0)
schedule_interval: '0 8 * * *'
第一个 运行 将在 08:00
+- 2020-12-08
开始(取决于资源)
这个 运行 的 execution_date
将是:2020-12-07 08:00
下一个 运行 将在 2020-12-09
08:00
这个 运行 的 execution_date
的 2020-12-08 08:00
。
由于今天是 2020-12-08
,下一个 运行 没有开始,因为它还不是间隔的 结束 。