配置參考¶
此頁面包含 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_URLAIRFLOW__CELERY__BROKER_URL_CMDAIRFLOW__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_AUTHAIRFLOW__CELERY__FLOWER_BASIC_AUTH_CMDAIRFLOW__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_executor 或 fetch_celery_task_state 操作超時之前等待的秒數。
- 型別:
浮點數
- 預設值:
1.0- 環境變數:
AIRFLOW__CELERY__OPERATION_TIMEOUT
pool¶
Celery Pool 實現。選項包括:prefork(預設)、eventlet、gevent 或 solo。請參閱: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_BACKENDAIRFLOW__CELERY__RESULT_BACKEND_CMDAIRFLOW__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_KWARGSAIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__SENTINEL_KWARGS_CMDAIRFLOW__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