設定組態選項¶
當您第一次執行 Airflow 時,它會在您的 $AIRFLOW_HOME
目錄(預設為 ~/airflow
)中建立一個名為 airflow.cfg
的檔案。這是為了讓您更容易「玩玩」airflow 組態。
然而,對於生產環境,建議您使用命令列產生組態
airflow config list --defaults
此命令將產生您可以複製到您的組態檔案並編輯的輸出。
它將包含所有預設組態選項,並附帶範例,且已妥善註解,因此您只需要取消註解並修改您想要變更的選項。這樣一來,您可以輕鬆追蹤所有您從預設值變更的組態選項,並且當 Airflow 發布新版本時,您可以輕鬆升級您的安裝,並在現有選項變更時自動使用其預設值。
您可以將其重新導向至您的組態檔案並進行編輯
airflow config list --defaults > "${AIRFLOW_HOME}/airflow.cfg"
您也可以使用環境變數設定選項,格式如下: AIRFLOW__{SECTION}__{KEY}
(請注意雙底線)。
例如,metadata 資料庫連線字串可以像這樣在 airflow.cfg
中設定
[database]
sql_alchemy_conn = my_conn_string
或透過建立對應的環境變數
export AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=my_conn_string
請注意,當 section 名稱中含有點時,您必須在設定環境變數時將其替換為底線。例如,考慮虛擬 section providers.some_provider
[providers.some_provider]
this_param = true
export AIRFLOW__PROVIDERS_SOME_PROVIDER__THIS_PARAM=true
您也可以在執行時透過將 _cmd
附加到 key 來衍生連線字串,如下所示
[database]
sql_alchemy_conn_cmd = bash_command_to_run
您也可以在執行時透過將 _secret
附加到 key 來衍生連線字串,如下所示
[database]
sql_alchemy_conn_secret = sql_alchemy_conn
# You can also add a nested path
# example:
# sql_alchemy_conn_secret = database/sql_alchemy_conn
這將從 Secret Backends (例如 Hashicorp Vault) 檢索組態選項。請參閱 Secrets Backends 以取得更多詳細資訊。
以下組態選項支援 _cmd
和 _secret
版本
sql_alchemy_conn
在[database]
section 中fernet_key
在[core]
section 中broker_url
在[celery]
section 中flower_basic_auth
在[celery]
section 中result_backend
在[celery]
section 中password
在[atlas]
section 中smtp_password
在[smtp]
section 中secret_key
在[webserver]
section 中
_cmd
組態選項也可以使用對應的環境變數來設定,與一般組態選項的方式相同。例如
export AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_CMD=bash_command_to_run
同樣地,_secret
組態選項也可以使用對應的環境變數來設定。例如
export AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_SECRET=sql_alchemy_conn
注意
組態選項必須遵循 secrets backend 中定義的組態前綴命名慣例。這表示 sql_alchemy_conn
並非以連線前綴定義,而是以組態前綴定義。例如,它應該命名為 airflow/config/sql_alchemy_conn
這樣做的目的是為了不要將密碼以純文字檔案形式儲存在伺服器上。
所有組態選項的通用優先順序如下
設定為環境變數 (
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN
)設定為命令環境變數 (
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_CMD
)設定為 secret 環境變數 (
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_SECRET
)在
airflow.cfg
中設定airflow.cfg
中的命令airflow.cfg
中的 secret keyAirflow 的內建預設值
注意
對於 Airflow 版本 >= 2.2.1、< 2.3.0,在某些情況下,Airflow 的內建預設值優先於 airflow.cfg
中的命令和 secret key。
您可以使用 airflow config list
命令檢查目前的組態。
如果您只想查看單一選項的值,您可以使用 airflow config get-value
命令,如下例所示。
$ airflow config get-value core executor
SequentialExecutor
注意
有關組態選項的更多資訊,請參閱組態參考
注意
有關 Python 和 Airflow 如何管理模組的詳細資訊,請參閱模組管理。
注意
在所有 Airflow 組件中使用相同的組態。雖然並非每個組件都需要所有組態,但某些組態需要相同,否則它們將無法如預期般運作。一個很好的例子是 secret_key,它在 Webserver 和 Worker 上應該相同,以允許 Webserver 從 Worker 取得日誌。
webserver key 也用於授權對 Celery worker 的請求,以便在檢索日誌時使用。使用 secret key 產生的 token 具有短暫的到期時間 - 請確保您執行 airflow 組件的所有機器上的時間都已同步 (例如使用 ntpd),否則在存取日誌時可能會收到「forbidden」錯誤。
設定本機設定¶
某些 Airflow 組態是透過本機設定配置的,因為它們需要在 Airflow 初始化時執行的程式碼中進行變更。通常在詳細文件中會提到您可以在哪裡設定此類本機設定 - 這通常在 airflow_local_settings.py
檔案中完成。
您應該建立一個 airflow_local_settings.py
檔案,並將其放在 sys.path
中的目錄或 $AIRFLOW_HOME/config
資料夾中。(Airflow 在初始化時會將 $AIRFLOW_HOME/config
新增至 sys.path
) 從 Airflow 2.10.1 開始,$AIRFLOW_HOME/dags
資料夾不再包含在初始化時的 sys.path
中,因此該資料夾中的任何本機設定都不會被匯入。請確保 airflow_local_settings.py 位於初始化期間 sys.path 的路徑中,例如 $AIRFLOW_HOME/config。有關此變更的更多背景資訊,請參閱 mailing list announcement。
您可以在這裡看到此類本機設定的範例
您可以透過這種方式設定的範例設定
設定 Airflow Webserver 的 Flask 應用程式¶
Airflow 使用 Flask 來呈現 web UI。當您初始化 Airflow webserver 時,會使用基於 airflow.cfg
檔案的 webserver
section 的預定義組態。但是,您可以透過將 flask 組態新增至 $AIRFLOW_HOME
目錄中的 webserver_config.py
檔案來覆寫這些設定並新增任何額外設定。此檔案會由 webserver 自動載入。
例如,如果您想要將速率限制策略變更為「移動視窗」,您可以將 RATELIMIT_STRATEGY
設定為 moving-window
。
您也可以直接增強/修改底層 flask 應用程式,因為 app context 會被推送到 webserver_config.py
from flask import current_app as app
@app.before_request
def print_custom_message() -> None:
print("Executing before every request")