Apache Airflow 每日午夜 UTC 时间表
Apache Airflow dag schedules in midnight UTC
我使用以下默认参数创建了 Apache Airflow DAG。我希望这个 DAG 在世界标准时间每天晚上 10 点 运行 但它总是在世界标准时间上午 12 点 运行 宁并忽略我在 start_date 中设置的日期时间。这不是正确的方法吗?谢谢
default_args = {
'owner': config.OWNER,
'depends_on_past': False,
'start_date': datetime(2018, 10, 14, 22, 0, 0),
'email': [config.ALERT_EMAIL],
'email_on_failure': True,
'email_on_retry': False,
'retry_delay': timedelta(minutes=1),
'retries': 2,
}
# DAG
dag = DAG('Test',
default_args=default_args,
description='Initial setup',
schedule_interval='@daily')
您还可以在 schedule interval
参数中使用 cron format,如下所示:
# DAG
dag = DAG('Test',
default_args=default_args,
description='Initial setup',
schedule_interval='0 22 * * *')
关于schedule_interval
你至少有三个选择:
datetime.timedelta
dateutil.relativedelta
cron 样式字符串
schedule_interval
定义了 DAG 运行的频率。这个 timedelta 对象被添加到你最新的任务实例的 execution_date 来计算下一个时间表。请记住:start_date
对于任务,确定第一个任务实例的 execution_date。
以上都是正确的。
我遇到了一个问题,在 Airflow 2.0 中,schedule_interval 在 default_args 中被忽略。当我删除它并将其放入 DAG 声明时,一切正常。我可以通过查看 UI.
中的 DAG 详细信息来测试它
示例:
default_args = {
'owner': 'Hector Hoffman',
'depends_on_past': False,
'start_date':start_date,
'schedule_interval': '0 5 * * *',
'email': ['hector@email.com'],
'email_on_failure': True,
'email_on_retry': False,
'retries': 0,
'on_failure_callback': task_fail_slack_alert
}
结果:
然而,当我把它放在 DAG 中时:
with models.DAG(
"dealstampede_workflow",
default_args=default_args,
catchup=False,
schedule_interval='0 5 * * *'
) as dag:
结果:
如果有人知道为什么 schedule_interval 在 default_args 中不起作用,我将不胜感激。谢谢
我使用以下默认参数创建了 Apache Airflow DAG。我希望这个 DAG 在世界标准时间每天晚上 10 点 运行 但它总是在世界标准时间上午 12 点 运行 宁并忽略我在 start_date 中设置的日期时间。这不是正确的方法吗?谢谢
default_args = {
'owner': config.OWNER,
'depends_on_past': False,
'start_date': datetime(2018, 10, 14, 22, 0, 0),
'email': [config.ALERT_EMAIL],
'email_on_failure': True,
'email_on_retry': False,
'retry_delay': timedelta(minutes=1),
'retries': 2,
}
# DAG
dag = DAG('Test',
default_args=default_args,
description='Initial setup',
schedule_interval='@daily')
您还可以在 schedule interval
参数中使用 cron format,如下所示:
# DAG
dag = DAG('Test',
default_args=default_args,
description='Initial setup',
schedule_interval='0 22 * * *')
关于schedule_interval
你至少有三个选择:
datetime.timedelta
dateutil.relativedelta
cron 样式字符串
schedule_interval
定义了 DAG 运行的频率。这个 timedelta 对象被添加到你最新的任务实例的 execution_date 来计算下一个时间表。请记住:start_date
对于任务,确定第一个任务实例的 execution_date。
以上都是正确的。
我遇到了一个问题,在 Airflow 2.0 中,schedule_interval 在 default_args 中被忽略。当我删除它并将其放入 DAG 声明时,一切正常。我可以通过查看 UI.
中的 DAG 详细信息来测试它示例:
default_args = {
'owner': 'Hector Hoffman',
'depends_on_past': False,
'start_date':start_date,
'schedule_interval': '0 5 * * *',
'email': ['hector@email.com'],
'email_on_failure': True,
'email_on_retry': False,
'retries': 0,
'on_failure_callback': task_fail_slack_alert
}
结果:
然而,当我把它放在 DAG 中时:
with models.DAG(
"dealstampede_workflow",
default_args=default_args,
catchup=False,
schedule_interval='0 5 * * *'
) as dag:
结果:
如果有人知道为什么 schedule_interval 在 default_args 中不起作用,我将不胜感激。谢谢