AirFlow 未 运行 时间表

AirFlow not running schedule

我有一个非常简单的 dag,它应该在每个星期一 19:10 运行。 dag如下:

from airflow.models import DAG
from airflow.utils.dates import days_ago
from airflow.operators.bash_operator import BashOperator


args = {'owner': 'AirFlow'}

with DAG(dag_id='schedule_test_weekly', default_args=args, schedule_interval="20 21 * * 1", tags=['Scheduler test'],
         start_date=days_ago(2), catchup=False) as dag:
    test_scheduler_health = BashOperator(task_id="test_test_weekly", bash_command="echo Hello World", dag=dag)

但是,它不会触发。如果我将 schedule_interval 更改为 schedule_interval="*/5 * * * *",它将每 5 分钟 运行 一次,没有问题。但我不能 运行 每个星期一在上述时间。我在网上查了很多指南和帖子。大多数提到执行者应该是 LocalExecutor 并且数据库连接应该设置为 postgres。我有这些配置:

sql_alchemy_conn = postgresql+psycopg2://airflow:pass2@localhost:5432/airflow
sql_alchemy_pool_enabled = True
sql_alchemy_pool_size = 10
executor = LocalExecutor

我还使用 cronhub 检查我的 cron 计划。我认为是正确的。我是不是遗漏了什么或做错了什么?

您的代码中的问题是未正确使用 start_date

如果您希望每周工作到 运行 今天(星期一),start_date 需要是上周(星期一)。原因在此.

中解释

因此(假设今天是 2021 年 4 月 5 日)您的 DAG 需要:

with DAG(dag_id='schedule_test_weekly',
         default_args=args,
         schedule_interval="10 19 * * 1",
         tags=['Scheduler test'],
         start_date=datetime(2021, 3, 29), # Monday 
         catchup=False
         ) as dag:

第一个 运行 将在 2021-04-05(今天)开始,第 execution_date2021-03-29

下一个 运行 将在 2021-04-12 开始,execution_date2021-04-05,然后以该模式作为每周工作。