Airflow 中文文档:时区

默认情况下启用对时区的支持。 Airflow在内部和数据库中以UTC格式存储日期时间信息。 它允许您使用时区相关的计划运行DAG。 目前,Airflow不会将其转换为用户界面中的最终用户时区。 它始终以UTC显示。 此外,操作符中使用的模板也不会被转换。 时区信息是暴露出来的,由DAG的作者负责。

如果您的用户居住在多个时区,并且您希望根据每个用户的挂钟显示日期时间信息,这将非常方便。

即使您只在一个时区运行Airflow,在数据库中以UTC格式存储数据仍然是一种很好的做法(在Airflow成为时区之前也是如此,这也是建议的甚至是必需的设置)。 主要原因是夏令时(DST)。 许多国家都有DST系统,其中时钟在春季向前移动,在秋季向后移动。 如果您在当地工作,那么当转换发生时,您可能每年会遇到两次错误。 (钟摆和pytz文档更详细地讨论了这些问题。)这对于简单的DAG可能无关紧要,但如果您处于金融服务中,那么这是一个问题,在这些金融服务中您可以满足最后期限。

时区在<cite>airflow.cfg中</cite>设置。 默认情况下,它设置为utc,但您将其更改为使用系统设置或任意IANA时区,例如<cite>Europe / Amsterdam</cite> 。 它取决于<cite>钟摆</cite> ,它比<cite>pytz</cite>更准确。 安装Airflow时会安装Pendulum。

请注意,Web UI目前仅以UTC格式运行。

概念

天真并了解日期时间对象

Python的datetime.datetime对象具有tzinfo属性,可用于存储时区信息,表示为datetime.tzinfo的子类的实例。 设置此属性并描述偏移量时,可以识别日期时间对象。 否则,这是天真的。

您可以使用timezone.is_aware()和timezone.is_naive()来确定日期时间是否知晓或天真。

因为Airflow使用时区感知日期时间对象。 如果您的代码创建了datetime对象,那么他们也需要注意。

阅读全文/改进本文

猜你喜欢

转载自blog.csdn.net/wizardforcel/article/details/84637338