1. 程式人生 > >Airflow 中文文件:時區

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物件,那麼他們也需要注意。

閱讀全文/改進本文