如果手动运行dag,则气流计划dag_run时间会更改



我使用的是Airflow 2.2.5,它是根据Postgres数据库的官方docker镜像构建的。举个例子,我有一个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小时(
  • CCD_ 9和CCD_

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

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

最新更新