为什么 airflow dag schedule_interval */1 * * * * 失败了?
Why airflow dag schedule_interval */1 * * * * failed?
我正在设置来自 apache/airflow(2.0.0 dev) 的 docker 气流。像这样的 dag 代码
DAG_NAME='Simple_Dag_1'
default_args = {
'owner': 'airflow',
'depends_on_past': True,
'start_date': utils.dates.days_ago(2)
}
dag = DAG(DAG_NAME, schedule_interval='*/1 * * * *', default_args=default_args)
run_this = BashOperator(
task_id='run_this_first',
bash_command='date >> /tmp/airflow.log',
dag=dag,
)
我觉得应该是按分钟输出
22:26:00
22:27:00
22:28:00
但它的输出如下:
22:26:47
22:27:01
22:27:13
22:27:22
22:27:39
22:27:54
22:28:10
22:28:19
22:28:33
22:28:45
我更改了 catchup=false,现在序列是:
Thu Jun 6 16:13:29 UTC 2019
Thu Jun 6 16:14:16 UTC 2019
Thu Jun 6 16:15:21 UTC 2019
Thu Jun 6 16:16:20 UTC 2019
Thu Jun 6 16:17:19 UTC 2019
Thu Jun 6 16:18:21 UTC 2019
Thu Jun 6 16:19:20 UTC 2019
Thu Jun 6 16:20:26 UTC 2019
现在按 1 分钟执行,但秒数不够准确。我还缺少什么吗?
您正在输出 bash 命令 运行 的确切日期时间。每次都不完全是秒。如果你想让你的 dag 输出你期望 运行 开始的确切时间,你可以使用
{{ ts }}
使用神社模板获取时间戳。这将为您提供 dag 预定 运行 的确切时间。它不会为您提供 DAG 实际 运行 的确切时间。
我正在设置来自 apache/airflow(2.0.0 dev) 的 docker 气流。像这样的 dag 代码
DAG_NAME='Simple_Dag_1'
default_args = {
'owner': 'airflow',
'depends_on_past': True,
'start_date': utils.dates.days_ago(2)
}
dag = DAG(DAG_NAME, schedule_interval='*/1 * * * *', default_args=default_args)
run_this = BashOperator(
task_id='run_this_first',
bash_command='date >> /tmp/airflow.log',
dag=dag,
)
我觉得应该是按分钟输出
22:26:00
22:27:00
22:28:00
但它的输出如下:
22:26:47
22:27:01
22:27:13
22:27:22
22:27:39
22:27:54
22:28:10
22:28:19
22:28:33
22:28:45
我更改了 catchup=false,现在序列是:
Thu Jun 6 16:13:29 UTC 2019
Thu Jun 6 16:14:16 UTC 2019
Thu Jun 6 16:15:21 UTC 2019
Thu Jun 6 16:16:20 UTC 2019
Thu Jun 6 16:17:19 UTC 2019
Thu Jun 6 16:18:21 UTC 2019
Thu Jun 6 16:19:20 UTC 2019
Thu Jun 6 16:20:26 UTC 2019
现在按 1 分钟执行,但秒数不够准确。我还缺少什么吗?
您正在输出 bash 命令 运行 的确切日期时间。每次都不完全是秒。如果你想让你的 dag 输出你期望 运行 开始的确切时间,你可以使用
{{ ts }}
使用神社模板获取时间戳。这将为您提供 dag 预定 运行 的确切时间。它不会为您提供 DAG 实际 运行 的确切时间。