默認情況下啟用對時區的支持。 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對象,那么他們也需要注意。