【问题标题】:Google cloud composer: tasks not executed in scheduled dag run, but executed successfully in manual dag run谷歌云作曲家:任务没有在计划的dag运行中执行,但在手动dag运行中执行成功
【发布时间】:2020-06-07 06:50:07
【问题描述】:

我有一个DAG 有多个任务。当调度程序执行 DAG 时,它会进入running 状态,但 DAG 中的任何任务都没有任何状态。但是,如果手动执行相同的 DAG(Trigger Dag 按钮单击)- 任务将变为 queued->running->success。 我试图检查 Stackdriver 日志中的“Cloud Composer Environment” - 但没有发现任何可疑的日志条目。还检查了气流 UI 中的任务日志 - 它们是空的。

为什么计划的 dag 运行会卡住?如何找出计划 DAG 问题的原因?

【问题讨论】:

    标签: airflow airflow-scheduler google-cloud-composer


    【解决方案1】:

    原因是start_date 参数。是这样计算的:

    START_DATE = datetime.datetime.now() - datetime.timedelta(hours=1)
    dag = airflow.DAG(
            'data_transfer_dag',
            'catchup=False',
            default_args = {
                'owner': 'Zufar',
                'depends_on_past': False,
                'email': [''],
                'email_on_failure': False,
                'email_on_retry': False,
                'retries': 1,
                'retry_delay': datetime.timedelta(minutes=5),
                'start_date': START_DATE,
            },
            schedule_interval=datetime.timedelta(hours=1)
    )
    

    修复是使用硬编码的日期:START_DATE = datetime.datetime(2020,1,1)。所以不能根据当前时间计算。只需使用硬编码的过去日期即可。

    【讨论】:

    • 您可能希望使用 Airflow 实用程序中的 days_ago() 来完成类似的操作。 from airflow.utils.dates import days_ago default_args = { 'start_date': days_ago(0) }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 2019-01-29
    • 1970-01-01
    • 2021-12-27
    相关资源
    最近更新 更多