气流计划程序未接班

时间:2018-10-12 05:54:03

标签: cron airflow airflow-scheduler

我用以下参数创建了一个新的Dag:

default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime.now(),
    'email': ['airflow@example.com'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
    'catchup': False,
    # 'queue': 'bash_queue',
    # 'pool': 'backfill',
    # 'priority_weight': 10,
    # 'end_date': datetime(2016, 1, 1),
    # 'wait_for_downstream': False,
    # 'dag': dag,
    # 'adhoc':False,
    # 'sla': timedelta(hours=2),
    # 'execution_timeout': timedelta(seconds=300),
    # 'on_failure_callback': some_function,
    # 'on_success_callback': some_other_function,
    # 'on_retry_callback': another_function,
    # 'trigger_rule': u'all_success'
}

dag = DAG(
    'sample_dag',
    default_args=default_args,
    description='sample dag',
    schedule_interval="44 * * * *")

但是时间到了,调度程序并没有接达。当我手动触发它时,它运行良好。我在这里想念什么吗?

此外,当cron表达式为"*/5 * * * *"

时,调度程序将引发错误。
CroniterBadCronError: Exactly 5 or 6 columns has to be specified for iteratorexpression.

但是cron表情对我来说很好。

1 个答案:

答案 0 :(得分:2)

这样做的原因是[time the dag runs] = start_date + schedule_interval。因此,如果将start_date设置为动态的,则dag将永远不会执行,因为start_date会随着...时间的增加而不断增加。

here得到了解释,堆栈上还有另一个问题here也有答案,他们可能比我解释得更好。

您应该将start_date更改为静态内容,而不是datetime.now()

如果您不想回填dag,则需要将catchup=False设置为dag参数。如下所示:

default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime(2018, 1, 1),
    'email': ['airflow@example.com'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5)
}

dag = DAG(
    'sample_dag',
    catchup=False,
    default_args=default_args,
    description='sample dag',
    schedule_interval="44 * * * *"
    )