我正在尝试执行一个只需要运行一次的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
有人可以帮忙解决此问题。
谢谢, 阿琼
答案 0 :(得分:0)
2017年的“星期几”现货。试试12 09 13 11 *。您正尝试在“schedule interval ”字段中设置“日期”。从技术上讲,这将每年安排一次。您可以通过这种方式运行它,并在完成后停用DAG。
答案 1 :(得分:0)
设置所需分钟,小时,日,月和工作日的年度间隔。 I.E. 12 09 13 11 *
。分别在该日期之前和之后设置您的DAG的start_date
和end_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)
由于日期时间可以占用您的时间,您可以将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)