Airflow DAG未按计划触发排查:手动运行正常但Scheduler无响应
我配置了如下DAG,计划每日00:30运行,昨日创建后预期今日首次执行,但Scheduler完全未触发该DAG。手动运行DAG一切正常,请问可能的问题是什么?
with DAG( dag_id="my_name", description='my_name', start_date=datetime.datetime(2023, 12, 14, 0, 0), schedule_interval="30 0 * * *", catchup=False, params={ "is_debug": False, }, ) as dag: default_args = { 'retries': 3, 'retry_delay': datetime.timedelta(minutes=5), 'retry_exponential_backoff': True, 'max_retry_delay': datetime.timedelta(minutes=10), } task_my_name = PythonOperator( task_id='task_my_name', provide_context=True, python_callable=my_name, default_args=default_args, op_kwargs={ "is_debug": is_debug_param, }, ) task_final = PythonOperator( task_id='task_final', provide_context=True, python_callable=finalfunction, ) ( task_my_name >> task_final )
可能的问题及排查方向
时区不匹配:Airflow默认使用UTC时区,若你的业务时间是本地时区(如北京时间),
30 0 * * *对应的UTC时间和你预期的本地00:30不符,导致触发时间偏差。可以在DAG中显式指定timezone参数(例如timezone="Asia/Shanghai"),或检查airflow.cfg中的default_timezone配置是否正确。start_date 调度逻辑误解:Airflow的调度触发时间是
start_date + schedule_interval,且仅会触发当前时间之后的周期。若你在12月14日创建DAG,start_date设为12月14日00:00,schedule为每日00:30,首次触发时间应为12月15日00:30,需确认是否到了正确的触发时间点。DAG被意外暂停:检查Airflow UI中该DAG的状态,确保处于启用状态(未被暂停),新创建的DAG有时会默认处于暂停状态。
Scheduler服务异常:查看Airflow Scheduler的运行日志,检查是否有该DAG的解析错误、权限问题或其他异常信息,确认Scheduler是否正常运行。
default_args 配置位置错误:你的
default_args定义在DAG的with块内部,但未传递给DAG对象。虽然Task单独指定了default_args,但DAG级别的参数缺失可能影响调度逻辑,建议将default_args作为参数传入DAG(例如with DAG(..., default_args=default_args))。未定义变量隐患:代码中
op_kwargs里的is_debug_param未定义,虽然手动运行可能正常传入参数,但调度器自动运行时会因变量未定义导致任务失败,需补充该变量的定义(例如从dag.params['is_debug']获取)。
内容的提问来源于stack exchange,提问作者Arie

