为了账号安全,请及时绑定邮箱和手机立即绑定

气流 cron 计划间隔未触发 DAG

气流 cron 计划间隔未触发 DAG

叮当猫咪 2021-11-16 16:35:35
注意:crontab.guru 链接已损坏,因此我将它们封装在代码块中。我有一个 DAG,将在太平洋时间星期一午夜 8 点(UTC 时间)执行 1 分钟以避免任何重叠问题。原本计划的间隔为1 8 */1 * 1它根据https://crontab.guru/#1_8_*/1_*_1“每天的日08:01在UTC(美国东部时间03:01,00:01 PST),如果它是在星期一”是。然而,这导致 DAG 在每天 08:01 UTC 触发;星期一的条件似乎被忽略了。计划间隔已更新为更简单的1 8 * * 1,根据https://crontab.guru/#1_8_*_*_1“星期一 UTC 时间 08:01(美国东部标准时间 03:01,太平洋标准时间 00:01)”。这阻止了 DAG 每天执行,但它没有在 2019 年 2 月 18 日,即更新后的第一个星期一触发。我已经阅读了一些其他帖子,表明开始日期可能会导致此问题,但此任务的开始日期是datetime(2019, 2, 11, 0, 0, 0, 0, pytz.UTC),这是 2019-02-18 运行日期之前的两个间隔。这是完整的 DAG/任务定义(没有导入或特定名称):dag = DAG(    dag_id="dag",    description="dag",    # At 08:01 UTC (03:01 EST, 00:01 PST) on Monday    # (https://crontab.guru/#1_8_*_*_1)    schedule_interval="1 8 * * 1",    catchup=False,)task = PythonOperator(    task_id="handle",    provide_context=True,    python_callable=handle,    dag=dag,    retries=2,    retry_delay=timedelta(minutes=15),    start_date=datetime(2019, 2, 11, 0, 0, 0, 0, pytz.UTC),)知道为什么这不会在 2019-02-18 00:01 UTC 间隔之后执行吗?
查看完整描述

1 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

编辑:您在 18 日没有看到运行执行的原因是您有 catchup=False

如果回填天数已经过去,这将导致 DAG 跳过回填天数。如果您想看到 DAG 填充第 17 个和第 24 个,您需要设置catchup=True

气流的DAG执行在END中的计划间隔,因此,如果您的开始日期是当前周一,你的时间间隔为周一,DAG将不执行这个周一的继续运行,直到下一个星期一。

这里的主要思想是当前星期一运行的数据现在可用,直到该间隔期结束。这让你从日常工作的角度考虑它更有意义。如果您正在运行的作业正在寻找今天的数据,那么该数据集要到今天结束才能完成。因此,如果您想运行今天的数据,则需要明天执行您的工作。这只是 Airflow 所采用的惯例,无论您喜欢与否。

如果您想调整日期,您可以使用{{ macros.ds_add( ds, 7) }}将执行日期移动 7 天。

让我知道这个答案是否有意义。如果没有,我将对其进行扩展。这个约定是我们在为 Airflow 作业开发时不得不处理的最烦人的细节。


查看完整回答
反对 回复 2021-11-16
  • 1 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信