代码之家  ›  专栏  ›  技术社区  ›  nimish

重置气流DAG执行时间

  •  0
  • nimish  · 技术社区  · 7 年前

    目前我有一个预定的DAG @daily 通常应该在午夜后触发以运行前一天的数据。

    不知怎么的,它现在已经开始运行在上午11:30,因为运行在过去有问题,并在那时手动重新启动。现在它总是在那个时候触发。当然,这是由于调度算法在最后一次执行后一天触发的。

    然而,并不完全希望在上午11点30分跑步。我想让DAG在午夜启动。

    我有什么选择?我可以随时更改名称,但如果将来发生这种情况,是否有一种方法可以轻松地编写脚本?

    气流1.8

    DAG代码:

    dag = DAG('my_dag_v5',
              catchup=False,
              default_args=args, 
              start_date=datetime.datetime(2018, 1, 30), 
              schedule_interval='@daily',
              max_active_runs=1)
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   Zack    7 年前

    改变 schedule_interval='@daily' schedule_interval='0 0 * * *'

    同时更改开始日期 start_date=datetime.datetime(2018, 1, 30, 4, 0) start_date=datetime(2018, 1, 30) .

    start_date (datetime)_“任务的开始日期,确定第一个任务实例的执行日期。最佳做法是将开始日期四舍五入到您的dag_s schedule_interval。

    schedule_interval -定义DAG运行的频率,将此TimeDelta对象添加到最新任务实例的执行日期,以确定下一个计划。

    这将使它每天午夜使用cron格式运行。

        2
  •  0
  •   nimish    7 年前

    不幸的是,尽管我尽了最大努力使用其他答案,但我找到的唯一一致的方法是 重置 不冒数据库/调度程序奇怪风险的执行时间是重命名DAG本身。

    调度程序算法将从上一个执行时间+调度程序延迟计算下一个执行时间。

    如果这一点发生了变化,而另一个答案是有效的,我会接受这一点,因为这正是我所期望的,但不会。