首页 > 解决方案 > 每两周安排一次气流作业

问题描述

我有一个要求,我想每隔一个星期五安排一次气流作业。但是,问题是我无法弄清楚如何为此编写时间表。

我不想为此做多份工作。

我试过这个

'0 0 1-7,15-21 * 5

但是它不起作用,它每天从 1 点到 7 点和 15 点到 21 点运行。

从shubham的回答我意识到我们可以有一个可以为我们跳过任务的PythonOperator。我试图实施解决方案。然而似乎不起作用。

因为在 2 周内测试这个太难了。这就是我所做的。

DAG:

args = {
    'owner': 'Gaurang Shah',
    'retries': 0,
    'start_date':airflow.utils.dates.days_ago(1),
}


dag = DAG(
    dag_id='test_dag',
    default_args=args,
    catchup=False,
    schedule_interval='*/5 * * * *',
    max_active_runs=1
    )


dummy_op = DummyOperator(task_id='dummy', dag=dag)

def _check_date(execution_date, **context):
    min_date = datetime.now() - relativedelta(minutes=10)
    print(context)
    print(context.get("prev_execution_date"))
    print(execution_date)
    print(datetime.now())
    print(min_date)
    if execution_date > min_date:
        raise AirflowSkipException(f"No data available on this execution_date ({execution_date}).")

check_date = PythonOperator(
    task_id="check_if_min_date",
    python_callable=_check_date,
    provide_context=True,
    dag=dag,
)

在此处输入图像描述

标签: airflowairflow-scheduler

解决方案


根据您的实现,您可以使用哈希。使用 1.10 版在我的气流计划中工作:

哈希 (#) '#' 允许用于星期几字段,并且后面必须跟一个介于 1 和 5 之间的数字。它允许指定构造,例如给定月份的“第二个星期五”。 [19] 例如,在星期几字段中输入“5#3”对应于每个月的第三个星期五。参考


推荐阅读