【问题标题】:Airflow cron expression scheduling incorrectAirflow cron 表达式调度不正确
【发布时间】:2020-07-11 15:28:20
【问题描述】:

'start_date': datetime(2020, 1, 1),
time_zone='亚洲/新加坡',

如果我想在每周三 (SGT) 上午 00:55 运行报告,我应该输入“55 0 * * 3”,但我必须输入“55 0 * * 4”。 (这样执行时间将按照预期,每周三 00:55 SGT)

同样,如果我希望每个月的第一天凌晨 3 点运行报告,我应该输入“schedule_interval = '0 3 1 * *”,然后它会将它安排到每月的最后一天凌晨 3 点。

发生了什么事?
我知道 UTC 时间提前 8 小时,但这仍然不能解释这一点,因为这些在 SGT 的预定开始时间之前 1 天开始。 因此,对于以下内容(仅在相关部分中复制),DAG 运行时间均为周三 00:55 AM SGT。

from airflow.operators.email_operator import EmailOperator

from airflow.contrib.hooks.ssh_hook import SSHHook
from airflow.contrib.operators.ssh_operator import SSHOperator

from datetime import datetime, timedelta
from airflow import DAG
import pendulum


default_args = {
    'owner': 'fs',  # Change to your group name
    'depends_on_past': False,
    'retries': 3,
    'cathup': True,
    'start_date': datetime(2020, 1, 1),

    'retry_delay': timedelta(minutes=30),


# every Wednesday 0:55, so ga_flattening done for BR as well for Sunday
dag = DAG(
    dag_id='SOMETHING',
    default_args=default_args,
    max_active_runs = 10,  # max 10 DAGS running
    schedule_interval= '55 0 * * 4',  #this will be wednesday 00:55 AM, not sure why
    time_zone='Asia/Singapore',
    catchup=True)

【问题讨论】:

    标签: cron airflow


    【解决方案1】:

    取自[文档][1]...

    您可以像尝试一样将非默认时区指定为 DAG 参数的一部分。但是简化一些事情可能更容易,并通过 start_date 插入时区。

    建议通过使用pendulum 时区构建 Python datetime,将时区信息添加到 start_date 参数。

    import pendulum
    
    local_tz = pendulum.timezone("Europe/Amsterdam")
    
    default_args=dict(
        start_date=datetime(2016, 1, 1, tzinfo=local_tz),
        owner='Airflow'
    )
    
    dag = DAG('my_tz_dag', default_args=default_args)
    op = DummyOperator(task_id='dummy', dag=dag)
    print(dag.timezone) # <Timezone [Europe/Amsterdam]>
    

    [1]:https://airflow.apache.org/docs/stable/timezone.html#:~:text=The%20default%20time%20zone%20is%20the%20time%20zone%20defined%20by,e.g.%60%60Europe%2FAmsterdam%60%60)。

    【讨论】:

      猜你喜欢
      • 2021-12-24
      • 1970-01-01
      • 2019-11-18
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 2015-03-18
      • 2019-07-23
      相关资源
      最近更新 更多