我创建了一个基于周运行的DAG。以下是我尝试的内容,它按预期工作。
from datetime import datetime, timedelta
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
SCHEDULE_INTERVAL = timedelta(weeks=1, seconds=00, minutes=00, hours=00)
default_args = {
'depends_on_past': False,
'retries': 0,
'retry_delay': timedelta(minutes=2),
'wait_for_downstream': True,
'provide_context': True,
'start_date': datetime(2020, 12, 20, hour=00, minute=00, second=00)
}
with DAG("DAG", default_args=default_args, schedule_interval=SCHEDULE_INTERVAL, catchup=True) as dag:
t1 = BashOperator(
task_id='dag_schedule',
bash_command='echo DAG',
dag=dag)
根据计划,它在27日(脚本中的20)运行。由于需求有变化,现在我将开始日期更新为30日(脚本中的23),而不是27日(我的想法是从30日开始,并从那时起每周进行)。当我更改DAG的计划,即将开始日期从27日更改为30日时,DAG没有按照最新的开始日期进行选择,原因不确定。当我删除了DAG(由于这是测试DAG,我可以删除它,在生产环境中我不能删除它),并创建了与最新开始日期(即30日)相同名称的新DAG时,它按照计划运行。