我用以下参数创建了一个新的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表情对我来说很好。
答案 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 * * * *"
)