繁体   English   中英

如果手动运行 DAG,Airflow 计划的 dag_run 时间会更改

[英]Airflow scheduled dag_run time changes if DAG is run manuallly

我正在使用 Airflow 2.2.5 构建自官方 docker 图像和 Postgres 数据库。 假设我有一个 DAG 设置为每天凌晨 2 点运行。 只要我只打开它让它运行,该过程就可以正常运行,并且 DAG 每天凌晨 2 点按预期运行,但如果由于某种原因我需要手动运行,比如上午 11 点,现在在第二天(以及以下所有)DAG 将在上午 11 点自动运行,而不是编程的凌晨 2 点。

我尝试使用 cron 表达式而不是schedule_intervaldatetime.timedelta并且即使在 UI 中看起来 DAG 将在凌晨 2 点运行(尽管手动运行了上午 11 点),但 DAG 实际上只在上午 11 点运行,这与 UI 指示相反.

正如其他人注意到这种行为? 我能做些什么来防止手动运行干扰预定的运行吗?

谢谢

Airflow 是一个数据流工具,每次运行都会给你一些上下文变量,以便在你的处理中使用它们:

  • data_interval_start :这是您将处理的数据中的第一个日期,它等于上一个运行结束日期
  • data_interval_end :这是您将处理的数据中的最后一个日期

因此,如果您使用这些变量来过滤您要处理的数据,您不能仅仅为了运行手动运行而更改schedule_interval ,因为如果您使用0 11,12 * * *例如,您将每天运行两次:

  • 第一个data_interval_start=12h00 of the previous daydata_interval_end=11h00 of the current day (23 小时)
  • 一个小时后的第二个, data_interval_start=11h00 of the current day data_interval_end=12h00 of the current day (1 小时)

但是如果你有一个在每次运行时使用完整数据的 dag,或者一个在不使用任何数据的情况下执行某些任务的 dag,你可以通过不同的方式手动触发它:

  • UI:点击dag页面底部的Trigger DAG
  • CLI:使用命令airflow dags trigger <dag_id> ( doc )
  • API: POST api/v1/dags/{dag_id}/dagRuns文档
  • Airflow 插件:创建一个 FlaskAppBuilder 表单以使用 python 方法创建运行(复杂,您只能将其用于某些用例)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM