3

我正在尝试执行一个只需要运行一次的 dag。所以我将 dag 执行间隔设置为“@once”。但是,我收到此链接中提到的错误 - https://issues.apache.org/jira/browse/AIRFLOW-1400

现在我正在尝试传递确切的执行日期,如下所示:

default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2017,11,13),
'email': ['airflow@airflow.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(seconds=5)
}

dag = DAG(
    dag_id='dagNameTest', default_args=default_args, schedule_interval='12 09 13 11 2017',concurrency=1)

这是抛出错误:

File "/usr/lib/python2.7/site-packages/croniter/croniter.py", line 543, in expand
expr_format))
CroniterBadCronError: [12 09 13 11 2017] is not acceptable, out of range

有人可以帮助解决这个问题。

谢谢,阿琼

4

2 回答 2

0

你有 2017 年在“星期几”的位置。试试12 09 13 11 *。您正在尝试在“计划间隔”字段中设置“日期”。所以从技术上讲,这将安排每年一次。您可以以这种方式运行它,并在完成后停用 DAG。

于 2017-12-05T17:33:05.763 回答
0

为所需的分钟、小时、日、月和工作日数设置年度间隔。即12 09 13 11 *。分别设置你的 DAGstart_dateend_date之前和之后的日期,并且它应该在那个时候只运行一次。

default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2017,1,1),
'end_date': datetime(2017,12,31),
'email': ['airflow@airflow.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(seconds=5)
}

dag = DAG(
    dag_id='dagNameTest', default_args=default_args, schedule_interval='12 09 13 11 *',concurrency=1)

由于 datetime 可能会占用您的时间,因此您可以将 start_date 设置为小时和分钟,然后使用@once时间表。但我自己没有尝试过。

default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2017,11,13,9,11),
'email': ['airflow@airflow.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(seconds=5)
}

dag = DAG(
    dag_id='dagNameTest', default_args=default_args, schedule_interval='@once',concurrency=1)
于 2017-12-06T01:48:34.930 回答