如何定义一个时区感知的Dag每天凌晨5点运行?

时间:2019-05-09 20:44:45

标签: python-3.x airflow directed-acyclic-graphs

我正在运行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是否能识别调子酮会照顾这个的。

例如,我的s​​chedule_interval应该是05 04 * * *还是05 00 * * *还是其他所有东西?

2 个答案:

答案 0 :(得分:0)

经过一些实验,我得出结论,为了让dag在每天的午夜5点以后运行 ,我需要使用05 00 * * * 和< / em>可识别时区的开始日期。

答案 1 :(得分:0)

您还可以编写不带0前缀的代码。像5 0 * * *