Airflow - 防止 dagrun 在部署/取消暂停后立即运行

use*_*688 7 airflow airflow-scheduler

之前好像有过关于这个的讨论。

当我取消暂停任务时,如何停止第一次运行任务的气流?

https://groups.google.com/g/cloud-composer-discuss/c/JGtmAd7xcsM?pli=1

当我部署 dag 在特定时间运行(例如,每天上午 9 点运行一次)时,Airflow 会立即在部署时运行 dag。

dag = DAG(
'My Dag',
default_args=default_args,
schedule_interval='00 09 * * *',
start_date = datetime(2021, 1, 1),
catchup=False # dont run previous and backfill; run only latest
)
Run Code Online (Sandbox Code Playgroud)

这是因为,当 catchup=False 时,调度程序“仅在最新的时间间隔内创建 DAG 运行”,如文档中所示。

https://airflow.apache.org/docs/apache-airflow/stable/dag-run.html

我想要实现的是,我什至不想在最近的时间间隔内启动 DAG 运行。我希望在下次时钟敲响上午 9 点之前什么都不会发生。

Airflow 似乎没有任何原生解决方案来解决这个问题。

人们一直在使用哪些解决方法?也许类似检查当前时间是否接近 next_execution_date 之类的事情?

Mik*_*rev 3

当您更新日期时,您可以设置start_date为第二天。但是,如果您暂停/取消暂停 dag,它将不起作用。

请注意,建议使用静态值(避免使用datetime.now()或类似的动态值),因此对于每个部署,您需要指定一个新值,例如datetime(2021, 10, 15), datetime(2021, 10, 16), ... 这可能会使部署更加困难。