相关疑难解决方法(0)

Airflow 执行日期令人困惑

我正在研究 Airflow 文档,以更好地了解其调度程序机制。我遇到了下面的例子。

在文档中指出,当调度程序在 2016 年 1 月 2 日上午 6 点选择 DAG 时,将创建一个 DAG 运行,其执行日期为 2016 年 1 月 1 日,并且将在 2016 年 1 月 1 日之后创建下一个 DAG 运行。 2016年1月3日上午午夜,执行日期为2016年1月2日。

调度间隔以小时为单位提供,执行日期是指最后运行 DAG 的时间段的开始,那么为什么调度程序选择 DAG 的时间不是在 2016 年 1 月 2 日早上 6 点之前一小时?

"""
Code that goes along with the Airflow tutorial located at:
https://github.com/airbnb/airflow/blob/master/airflow/example_dags/tutorial.py
"""
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta


default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime(2015, 12, …
Run Code Online (Sandbox Code Playgroud)

scheduler airflow

8
推荐指数
1
解决办法
1万
查看次数

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

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

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

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 之类的事情?

airflow airflow-scheduler

7
推荐指数
1
解决办法
2985
查看次数

Apache 气流中的开始日期和预定日期问题

我正在使用 Apache 气流,但我对预定日期和开始日期有疑问。

我希望 dag 每天在 8:00 AM UTC 运行。所以,我所做的是:

default_args = {
        'owner': 'airflow',
        'depends_on_past': False,
        'start_date': datetime(2020, 12, 7, 10, 0,0),
        'email': ['example@emaiil.com'],
        'email_on_failure': True,
        'email_on_retry': False,
        'retries': 1,
        'retry_delay': timedelta(hours=5)
    }
#never run
dag = DAG(dag_id='id', default_args=default_args, schedule_interval='0 8 * * *',catchup=True)
Run Code Online (Sandbox Code Playgroud)

我上传 dag 的那天是 2020-12-07,我想在 2020-12-08 的 08:00:00 运行它

我将 start_date 设置在 2020-12-07 的 10:00:00 以避免在 2020-12-07 的 08:00:00 运行它,并且只在第二天触发它,但它不起作用。

然后我所做的是修改开始日期:

default_args = {
        'owner': 'airflow',
        'depends_on_past': False,
        'start_date': datetime(2020, 12, 7, 7, 59,0),
        'email': ['example@emaiil.com'], …
Run Code Online (Sandbox Code Playgroud)

airflow airflow-scheduler

3
推荐指数
1
解决办法
678
查看次数

标签 统计

airflow ×3

airflow-scheduler ×2

scheduler ×1