“开始日期”:datetime(2020,1,1),
time_zone ='亚洲/新加坡'
如果我希望每个星期三(SGT)00:55 AM生成报告,则应输入'55 0 * * 3',但必须输入'55 0 * * 4'。 (这样,执行时间将按预期的时间,每星期三00:55 SGT)
同样,如果我希望每个月第一天凌晨3点运行报告,我应该输入'schedule_interval ='0 3 1 * *',但是它将其安排到每月凌晨3点SGT。 / p>
发生了什么事?
我知道UTC时间早了8个小时,但这仍然无法解释,因为它们在SGT中的预期开始时间之前1天开始。
因此,对于以下内容(仅复制到相关部分中),DAG运行时都是SGT的星期三00:55。
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)
答案 0 :(得分:0)
摘自[docs] [1] ...
您可以尝试将非默认时区指定为DAG参数的一部分。但是,简化事情并在start_date插入时区可能更容易。
该建议建议通过使用start_date
时区构建Python datetime
,从而将时区信息添加到pendulum
参数中。
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]>