【问题标题】:Airflow scheduler fails to pickup scheduled DAG's but runs when triggered manually气流调度程序无法拾取预定的 DAG,但在手动触发时运行
【发布时间】:2019-02-16 04:22:20
【问题描述】:

我用 python 3.5.6 安装了 Airflow 1.10.2。

元数据通过 LocalExecutor 放入 Mysql 数据库中执行。

我已经按照以下时间表创建了示例 helloworld.py dag。

default_args = {
        'owner': 'Ashish',
        'depends_on_past': False,
        'start_date': datetime(2019, 2, 15),
        'email_on_failure': False,
        'email_on_retry': False,
        'retries': 1,
        'retry_delay': timedelta(minutes=1),
    }

dag = DAG('Helloworld',schedule_interval='56 6 * * *', default_args=default_args)

但是调度程序没有按照预定时间接收这个 dag,而当我从 UI 手动运行它时,它运行得非常好。

这里关注的是为什么调度程序无法按预定时间拾取 dag。

【问题讨论】:

    标签: airflow airflow-scheduler


    【解决方案1】:

    我认为您对start_date: 感到困惑。您当前的计划设置为 2019 年 2 月 15 日 UTC 上午 6:56 运行。有了这个时间表,DAG 明天将毫无问题地运行。这是因为 Airflow 在间隔的结束而不是开始运行作业。

    start_date: 不是您希望触发 DAG 的时间,而是您希望启动调度间隔的时间。如果您希望您的工作今天运行,开始日期应该是:'start_date': datetime(2019, 2, 14)。那么您当前的每日计划间隔将按预期在今天上午 6:56 结束,并且您的 DAG 将运行。

    取自answer

    【讨论】:

    • 是的,与 start_date 存在一些混淆,因此对其他示例进行了一些实验。甚至我们可以使用 'start_date': airflow.utils.dates.days_ago(1) 像今天一样运行我的 dag。谢谢@Zack。
    猜你喜欢
    • 2020-12-21
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2021-10-14
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多