我正在运行Apache Airflow 1.10.0,并且想利用新的时区感知Dag功能。我必须承认,Airflow调度程序有点令人困惑,而且我不确定如何完成我想做的事情。我正在尝试定义一个每天在午夜5点(东部时间)运行的Dag。
到目前为止,我已经尝试使用Pendulum为时区感知start_date
定义Dag。我的计划时间间隔是timedelta(days=1)
。由于某种原因,这导致看似奇怪的时间是12:00,等等。
我当前的Dag定义:
...
dag_tz = pendulum.timezone('US/Eastern')
default_args = {
'owner': 'airflow',
'email': '<email_address>',
'email_on_failure': True,
'email_on_retry': True,
'retries': 3,
'depends_on_past': False,
'retry_delay': timedelta(minutes=5),
'provide_context': True,
'start_date': datetime(2019, 5, 1, tzinfo=dag_tz)
}
dag = DAG('my_dag_id', default_args=default_args,
catchup=False, schedule_interval=timedelta(days=1))
...
我想让Dag每天在同一时间运行。我已经看到我可以对schedule_interval
使用cron表达式,但这也令人困惑,因为我不确定是否需要在cron表达式中包含我的UTC偏移量,或者不确定Dag是否能识别调子酮会照顾这个的。
例如,我的schedule_interval应该是05 04 * * *
还是05 00 * * *
还是其他所有东西?
答案 0 :(得分:0)
经过一些实验,我得出结论,为了让dag在每天的午夜5点以后运行 ,我需要使用05 00 * * *
和< / em>可识别时区的开始日期。
答案 1 :(得分:0)
您还可以编写不带0前缀的代码。像5 0 * * *