【问题标题】:How do I define a timezone aware Dag to run at 5 past midnight every day?如何定义时区感知 Dag 在每天午夜 5 点运行?
【发布时间】:2019-05-09 20:44:44
【问题描述】:

我正在运行 Apache Airflow 1.10.0,我想利用新的时区感知 Dag 功能。我必须承认,气流调度程序有点混乱,我不太确定如何完成我想做的事情。我正在尝试定义一个每天午夜 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 是否可以识别 timzeone 的事实将需要照顾这个。

例如,我的 schedule_interval 应该是 05 04 * * *05 00 * * * 还是完全其他的?

【问题讨论】:

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


    【解决方案1】:

    经过一些实验,我得出的结论是,为了让 dag 在每天午夜 5 点运行,我需要使用05 00 * * * 的计划间隔以及 时区感知开始日期。

    【讨论】:

      【解决方案2】:

      你也可以不带 0 前缀来写。点赞5 0 * * *

      【讨论】:

        猜你喜欢
        • 2015-09-17
        • 1970-01-01
        • 2016-04-02
        • 2012-08-09
        • 2014-12-06
        • 1970-01-01
        • 2016-08-08
        • 2019-05-12
        • 2015-03-20
        相关资源
        最近更新 更多