Airflow中10分钟间隔DAG调度失效问题求助
问题分析与解决方案
我帮你排查了下,你的DAG调度完全没执行的核心问题出在start_date的设置上!
问题根源
你在default_args里把start_date设成了datetime.now(),这是个动态值——每次Airflow调度器加载DAG文件时,这个值都会变成当前的时间。Airflow的调度逻辑是基于固定的起始时间和schedule_interval来计算下一次执行时间的,动态的start_date会让调度器永远认为"还没到该执行的时候",自然不会触发任何任务。
从你的调度日志里也能看到明确提示:No tasks to send to the executor,本质就是调度器找不到符合条件的执行时间点。
修复步骤
把start_date改成一个固定的过去时间,比如你日志里的日期是2018-01-05,就可以设成一个早于当前时间的具体时刻:
'start_date': datetime(2018, 1, 5, 14, 0, 0),
修改后的完整default_args代码如下:
default_args = { 'owner': 'airflow', 'depends_on_past': False, 'start_date': datetime(2018, 1, 5, 14, 0, 0), # 固定的过去时间 'email': ['airflow@airflow.com'], 'email_on_failure': False, 'email_on_retry': False, 'retries': 1, 'retry_delay': timedelta(minutes=5), }
额外确认项
修改完start_date后,你可以再检查这几点确保万无一失:
- 确认Airflow调度器(
airflow scheduler)进程在正常运行 - 登录Airflow UI,确认你的
Python_callDAG处于启用状态(开关为打开状态) - 检查
bash_command里的脚本路径/var/www/projects/python_airflow/airpy/hello.py是否真实存在,且Airflow的运行用户拥有该脚本的读取和执行权限
内容的提问来源于stack exchange,提问作者Hitesh Roy
相关产品推荐
相关产品推荐

