Airflow 气流是否会拾取动态生成的计划间隔?

Airflow 气流是否会拾取动态生成的计划间隔?,airflow,airflow-scheduler,Airflow,Airflow Scheduler,我一直在运行airflow 1.9.0并使用动态生成的计划间隔 简单地说,我从一些配置文件中获取US/Eastern时间戳,获取当前系统时区(可以是EDT或EST),然后将其转换为UTC时间,然后转换为cron表达式 例如,如果我今天(美国东部时间2018-07-23)启动dag,并且我的输入是美国/东部时间早上6点,它将产生一个计划间隔为UTC上午10点或0 10**1-5的dag 我的问题是: 如果我让dag每天运行,当夏令时结束时,它的日程是否会在11月自动更新到0 11**1-5 我特别

我一直在运行airflow 1.9.0并使用动态生成的计划间隔

简单地说,我从一些配置文件中获取US/Eastern时间戳,获取当前系统时区(可以是EDT或EST),然后将其转换为UTC时间,然后转换为cron表达式

例如,如果我今天(美国东部时间2018-07-23)启动dag,并且我的输入是美国/东部时间早上6点,它将产生一个计划间隔为UTC上午10点或
0 10**1-5
的dag

我的问题是: 如果我让dag每天运行,当夏令时结束时,它的日程是否会在11月自动更新到
0 11**1-5


我特别想避免在调度这些DAG时使用tz感知的日期时间,这就是为什么我提出了这种时间戳转换的黑客方法。

您使用什么库或代码在东部时间戳之间进行转换并生成cron表达式?我认为回答你问题的这一部分取决于这些信息

不管怎样,这个想法听起来像是一种代码的味道。虽然它在技术上是可行的,但假设您的库正确地支持该用例,并且时区库是最新的,我相信您最好使用标准的方法来预先确定您想要的crontab时间表并一致地使用它

不使用本地时区也是一种最佳做法,例如,当您将服务器从东部移动到太平洋地区或在不同的时区运行多台服务器时,使用UTC everywhere可以在扩展时保持简单

由于UTC没有夏令时,这将帮助您避免DST错误等问题,如果不使用UTC,您必须解决这些问题

此外,官方文件建议不要使用naive datetimes:

因为气流使用时区感知的日期时间对象。如果您的代码创建了datetime对象,他们也需要知道

尽管Airflow完全支持时区,但它仍然接受DAG定义中开始日期和结束日期的原始日期时间对象。这主要是为了保持向后兼容性

不幸的是,在DST转换期间,某些日期时间不存在或不明确。在这种情况下,钟摆引发了一个例外。这就是为什么在启用时区支持时,您应该始终创建可感知的datetime对象


您能否详细介绍一下使用naive datetimes和时区感知datetimes的用例?我很乐意就这一点提供更具体的建议。

在我的使用案例中,我所从事的工作与美国股市的时间一致。例如,纳斯达克总是在9:30开放,我的工作应该总是在纽约时间上午9点运行,而不管DST如何。如果我使用UTC进行计划,则每当DST发生变化时,我必须更新每个作业的计划