配置參考

此頁面包含 apache-airflow-providers-celery provider 的所有可用 Airflow 配置列表,這些配置可以在 airflow.cfg 檔案中或使用環境變數進行設定。

注意

provider 中嵌入的配置從 Airflow 2.7.0 版本開始使用。之前,配置是在 Airflow core package 中描述和配置的——因此,如果您使用的是低於 2.7.0 的 Airflow 版本,請查閱 Airflow 文件以獲取 Airflow core 中可用的配置選項列表。

注意

更多資訊請參閱 設定配置選項

[celery]

本節僅當您在上面的 [core] 小節中使用 CeleryExecutor 時適用

broker_url

Celery broker URL。Celery 支援 RabbitMQ、Redis 和實驗性的 sqlalchemy 資料庫。有關更多資訊,請參閱 Celery 文件。

型別:

字串

預設值:

redis://redis:6379/0

環境變數:

AIRFLOW__CELERY__BROKER_URL

AIRFLOW__CELERY__BROKER_URL_CMD

AIRFLOW__CELERY__BROKER_URL_SECRET

celery_app_name

Celery 將使用的應用程式名稱

型別:

字串

預設值:

airflow.providers.celery.executors.celery_executor

環境變數:

AIRFLOW__CELERY__CELERY_APP_NAME

celery_config_options

Celery 配置選項的匯入路徑

型別:

字串

預設值:

airflow.providers.celery.executors.default_celery.DEFAULT_CELERY_CONFIG

環境變數:

AIRFLOW__CELERY__CELERY_CONFIG_OPTIONS

extra_celery_config

要包含在 Celery worker 中的額外 Celery 配置。任何 Celery 配置都可以新增到此配置中,並在啟動 Celery worker 時應用。例如:{"worker_max_tasks_per_child": 10} 另請參閱:https://docs.celeryq.dev/en/stable/userguide/configuration.html#configuration-and-defaults

型別:

字串

預設值:

{}

環境變數:

AIRFLOW__CELERY__EXTRA_CELERY_CONFIG

flower_basic_auth

使用基本認證保護 Flower 接受以逗號分隔的 user:password 對

型別:

字串

預設值:

''

環境變數:

AIRFLOW__CELERY__FLOWER_BASIC_AUTH

AIRFLOW__CELERY__FLOWER_BASIC_AUTH_CMD

AIRFLOW__CELERY__FLOWER_BASIC_AUTH_SECRET

示例:

user1:password1,user2:password2

flower_host

Celery Flower 是一個美觀的 Celery UI。Airflow 有一個快捷方式來啟動它:airflow celery flower。這定義了 Celery Flower 執行的 IP 地址

型別:

字串

預設值:

0.0.0.0

環境變數:

AIRFLOW__CELERY__FLOWER_HOST

flower_port

這定義了 Celery Flower 執行的埠

型別:

字串

預設值:

5555

環境變數:

AIRFLOW__CELERY__FLOWER_PORT

flower_url_prefix

Flower 的根 URL

型別:

字串

預設值:

''

環境變數:

AIRFLOW__CELERY__FLOWER_URL_PREFIX

示例:

/flower

operation_timeout

send_task_to_executorfetch_celery_task_state 操作超時之前等待的秒數。

型別:

浮點數

預設值:

1.0

環境變數:

AIRFLOW__CELERY__OPERATION_TIMEOUT

pool

Celery Pool 實現。選項包括:prefork(預設)、eventletgeventsolo。請參閱:https://docs.celeryq.dev/en/latest/userguide/workers.html#concurrency https://docs.celeryq.dev/en/latest/userguide/concurrency/eventlet.html

型別:

字串

預設值:

prefork

環境變數:

AIRFLOW__CELERY__POOL

result_backend

Celery 的 result_backend。當一個作業完成時,它需要更新作業的元資料。因此,它會將訊息釋出到訊息匯流排,或將其插入資料庫(取決於後端)。排程程式使用此狀態來更新任務的狀態。強烈建議使用資料庫。未指定時,將使用帶有 db+ 方案字首的 sql_alchemy_conn。請參閱:https://docs.celeryq.dev/en/latest/userguide/configuration.html#task-result-backend-settings

型別:

字串

預設值:

None

環境變數:

AIRFLOW__CELERY__RESULT_BACKEND

AIRFLOW__CELERY__RESULT_BACKEND_CMD

AIRFLOW__CELERY__RESULT_BACKEND_SECRET

示例:

db+postgresql://postgres:airflow@postgres/airflow

result_backend_sqlalchemy_engine_options

傳遞給 Celery result backend SQLAlchemy 引擎的可選配置字典。

型別:

字串

預設值:

''

環境變數:

AIRFLOW__CELERY__RESULT_BACKEND_SQLALCHEMY_ENGINE_OPTIONS

示例:

{"pool_recycle": 1800}

ssl_active

型別:

字串

預設值:

False

環境變數:

AIRFLOW__CELERY__SSL_ACTIVE

ssl_cacert

CA 證書的路徑。

型別:

字串

預設值:

''

環境變數:

AIRFLOW__CELERY__SSL_CACERT

ssl_cert

客戶端證書的路徑。

型別:

字串

預設值:

''

環境變數:

AIRFLOW__CELERY__SSL_CERT

ssl_key

客戶端金鑰的路徑。

型別:

字串

預設值:

''

環境變數:

AIRFLOW__CELERY__SSL_KEY

sync_parallelism

CeleryExecutor 用於同步任務狀態的程序數。0 表示使用 max(1, number of cores - 1) 個程序。

型別:

字串

預設值:

0

環境變數:

AIRFLOW__CELERY__SYNC_PARALLELISM

task_acks_late

添加於版本 3.6.0。

如果 Airflow 任務的執行時間超過 visibility_timeout,Celery 將重新分配該任務給另一個 Celery worker,即使原始任務仍在成功執行。新的任務例項將與原始任務同時執行,Airflow UI 和日誌只會顯示錯誤訊息:“Task Instance Not Running” FAILED: Task is in the running state”。將 task_acks_late 設定為 True 將強制 Celery 等待任務完成後才分配新的任務例項。這有效地覆蓋了 visibility timeout。另請參閱:https://docs.celeryq.dev/en/stable/reference/celery.app.task.html#celery.app.task.Task.acks_late

型別:

布林值

預設值:

True

環境變數:

AIRFLOW__CELERY__TASK_ACKS_LATE

示例:

True

task_publish_max_retries

由於 AirflowTaskTimeout 錯誤導致向 broker 釋出任務訊息失敗時,在放棄並將任務標記為失敗之前,嘗試重新發布的次數上限。

型別:

整數

預設值:

3

環境變數:

AIRFLOW__CELERY__TASK_PUBLISH_MAX_RETRIES

task_track_started

Celery 任務在由 worker 執行時,會將其狀態報告為“started”。這在 Airflow 中用於跟蹤正在執行的任務,並且如果 Scheduler 重啟或在 HA 模式下執行,它可以接管先前 SchedulerJob 啟動的孤立任務。

型別:

布林值

預設值:

True

環境變數:

AIRFLOW__CELERY__TASK_TRACK_STARTED

worker_autoscale

將用於根據負載動態調整程序池大小的最大和最小程序數。透過 airflow celery worker 命令提供 max_concurrency,min_concurrency 來啟用自動擴縮(始終保持最小程序數,必要時增長到最大)。根據 worker box 的資源和任務的性質選擇這些數字。如果 autoscale 選項可用,worker_concurrency 將被忽略。請參閱:https://docs.celeryq.dev/en/latest/reference/celery.bin.worker.html#cmdoption-celery-worker-autoscale

型別:

字串

預設值:

None

環境變數:

AIRFLOW__CELERY__WORKER_AUTOSCALE

示例:

16,12

worker_concurrency

使用 airflow celery worker 命令啟動 worker 時將使用的併發度。這定義了一個 worker 將處理的任務例項數量,因此根據您的 worker box 資源和任務性質來調整您的 worker 大小

型別:

字串

預設值:

16

環境變數:

AIRFLOW__CELERY__WORKER_CONCURRENCY

worker_enable_remote_control

指定是否啟用對 worker 的遠端控制。在某些 broker 不支援遠端控制的情況下,Celery 會建立大量的 .*reply-celery-pidbox 佇列。您可以透過將此設定為 false 來防止這種情況。但是,停用此選項後 Flower 將無法工作。請參閱:https://docs.celeryq.dev/en/stable/getting-started/backends-and-brokers/index.html#broker-overview

型別:

布林值

預設值:

true

環境變數:

AIRFLOW__CELERY__WORKER_ENABLE_REMOTE_CONTROL

worker_prefetch_multiplier

用於增加 worker 預取任務的數量,從而提高效能。程序數乘以 worker_prefetch_multiplier 就是 worker 預取的任務數量。如果存在多個 worker,並且一個 worker 預取了位於長時間執行任務之後的任務,而另一個 worker 的程序未被充分利用,無法處理已認領的被阻塞任務,那麼大於 1 的值可能會導致任務不必要地被阻塞。請參閱:https://docs.celeryq.dev/en/stable/userguide/optimizing.html#prefetch-limits

型別:

整數

預設值:

1

環境變數:

AIRFLOW__CELERY__WORKER_PREFETCH_MULTIPLIER

[celery_broker_transport_options]

本節用於指定可以傳遞給底層 celery broker transport 的選項。請參閱:https://docs.celeryq.dev/en/latest/userguide/configuration.html#std:setting-broker_transport_options

sentinel_kwargs

sentinel_kwargs 引數允許將額外選項傳遞給 Sentinel 客戶端。在 Redis Sentinel 用作 broker 且 Redis 伺服器受密碼保護的典型場景中,需要透過此引數傳遞密碼。雖然其型別為字串,但要求傳遞一個符合字典格式的字串。請參閱:https://docs.celeryq.dev/en/stable/getting-started/backends-and-brokers/redis.html#configuration

型別:

字串

預設值:

None

環境變數:

AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__SENTINEL_KWARGS

AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__SENTINEL_KWARGS_CMD

AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__SENTINEL_KWARGS_SECRET

示例:

{"password": "password_for_redis_server"}

visibility_timeout

visibility timeout 定義了等待 worker 確認任務的秒數,在此之前訊息將被重新發送給另一個 worker。請確保增加 visibility timeout 以匹配您計劃使用的最長 ETA 時間。visibility_timeout 僅支援 Redis 和 SQS celery broker。請參閱:https://docs.celeryq.dev/en/stable/getting-started/backends-and-brokers/redis.html#visibility-timeout

型別:

字串

預設值:

None

環境變數:

AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__VISIBILITY_TIMEOUT

示例:

21600

[celery_kubernetes_executor]

本節僅當您在上面的 [core] 小節中使用 CeleryKubernetesExecutor 時適用

kubernetes_queue

定義使用 CeleryKubernetesExecutor 時何時將任務傳送到 KubernetesExecutor。當任務的佇列是 kubernetes_queue 的值(預設為 kubernetes)時,任務透過 KubernetesExecutor 執行,否則透過 CeleryExecutor 執行

型別:

字串

預設值:

kubernetes

環境變數:

AIRFLOW__CELERY_KUBERNETES_EXECUTOR__KUBERNETES_QUEUE

本條目是否有幫助?