配置参考¶
本页面包含 apache-airflow-providers-celery 提供程序的所有可用 Airflow 配置列表,这些配置可以在 airflow.cfg 文件中或使用环境变量进行设置。
注意
欲了解更多信息,请参阅 设置配置选项。
[celery]¶
本节仅在您使用上述 [core] 部分中的 CeleryExecutor 时适用
broker_url¶
Celery 中间件(Broker)的 URL。Celery 支持多种中间件类型。请参阅: https://docs.celeryq.dev/en/stable/getting-started/backends-and-brokers/index.html#broker-overview
- 类型:
字符串
- 默认值:
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_workload_to_executor 或 fetch_celery_task_state 操作超时前等待的秒数。
- 类型:
浮点数
- 默认值:
1.0- 环境变量:
AIRFLOW__CELERY__OPERATION_TIMEOUT
pool¶
Celery 池实现。选项包括: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
- 类型:
字符串
- 默认值:
无- 环境变量:
AIRFLOW__CELERY__RESULT_BACKENDAIRFLOW__CELERY__RESULT_BACKEND_CMDAIRFLOW__CELERY__RESULT_BACKEND_SECRET- 示例:
db+postgresql://postgres:airflow@postgres/airflow
result_backend_sqlalchemy_engine_options¶
传递给 Celery 结果后端 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, 核心数 - 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 意味着仅在任务完成后才确认任务。注意:对于 Redis 和 SQS 中间件,task_acks_late 不会覆盖 visibility_timeout。无论此设置如何,中间件仍会重新发送超过 visibility_timeout 的任务。对于长时间运行的任务,您还必须增加 [celery_broker_transport_options] 中的 visibility_timeout。默认的 visibility_timeout 为 86400 秒(24 小时)。另请参阅: https://docs.celeryq.dev/en/stable/reference/celery.app.task.html#celery.app.task.Task.acks_late https://docs.celeryq.dev/en/stable/getting-started/backends-and-brokers/redis.html#visibility-timeout
- 类型:
布尔值
- 默认值:
True- 环境变量:
AIRFLOW__CELERY__TASK_ACKS_LATE- 示例:
True
task_publish_max_retries¶
在因 AirflowTaskTimeout 错误导致向中间件发布任务消息失败时,放弃并标记任务为失败前的最大重试次数。
- 类型:
整数
- 默认值:
3- 环境变量:
AIRFLOW__CELERY__TASK_PUBLISH_MAX_RETRIES
task_track_started¶
当 Worker 执行任务时,Celery 任务会将其状态报告为“started”。这在 Airflow 中用于跟踪正在运行的任务;如果调度程序重启或在 HA 模式下运行,它可以接管由先前 SchedulerJob 启动的孤立任务。
- 类型:
布尔值
- 默认值:
True- 环境变量:
AIRFLOW__CELERY__TASK_TRACK_STARTED
worker_autoscale¶
用于根据负载动态调整池大小的最大和最小池进程数。通过使用 airflow celery worker 命令提供 max_concurrency 和 min_concurrency 来启用自动缩放(始终保持最小进程数,但在必要时增加到最大值)。根据 Worker 机器的资源和任务性质选择这些数字。如果启用了自动缩放选项,worker_concurrency 将被忽略。 https://docs.celeryq.dev/en/latest/reference/celery.bin.worker.html#cmdoption-celery-worker-autoscale
- 类型:
字符串
- 默认值:
无- 环境变量:
AIRFLOW__CELERY__WORKER_AUTOSCALE- 示例:
16,12
worker_concurrency¶
使用 airflow celery worker 命令启动 Worker 时将使用的并发数。这定义了 Worker 将获取的任务实例数量,因此请根据 Worker 机器的资源和任务性质来确定 Worker 的规模。
- 类型:
字符串
- 默认值:
16- 环境变量:
AIRFLOW__CELERY__WORKER_CONCURRENCY
worker_enable_remote_control¶
指定是否启用 Worker 的远程控制。在某些中间件不支持远程控制的情况下,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 预取的任务总数。如果值大于 1,当有多个 Worker 时,可能会导致不必要的任务阻塞;即一个 Worker 预取了位于长时间运行任务之后的任务,而另一个 Worker 却拥有未使用的进程,且无法处理已经被前一个 Worker 声明但处于阻塞状态的任务。 https://docs.celeryq.dev/en/stable/userguide/optimizing.html#prefetch-limits
- 类型:
整数
- 默认值:
1- 环境变量:
AIRFLOW__CELERY__WORKER_PREFETCH_MULTIPLIER
worker_umask¶
以守护进程模式运行 Celery Worker 时使用的默认 umask
该设置控制文件创建模式掩码,决定新创建文件的权限位的初始值。
该值视为八进制整数。
- 类型:
字符串
- 默认值:
无- 环境变量:
AIRFLOW__CELERY__WORKER_UMASK
[celery_broker_transport_options]¶
本节用于指定可传递给底层 Celery 中间件传输的选项。请参阅: https://docs.celeryq.dev/en/latest/userguide/configuration.html#std:setting-broker_transport_options
sentinel_kwargs¶
sentinel_kwargs 参数允许向 Sentinel 客户端传递附加选项。在将 Redis Sentinel 用作中间件且 Redis 服务器受密码保护的典型场景中,需要通过此参数传递密码。尽管其类型为字符串,但必须传递符合字典格式的字符串。请参阅: https://docs.celeryq.dev/en/stable/getting-started/backends-and-brokers/redis.html#configuration
- 类型:
字符串
- 默认值:
无- 环境变量:
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¶
可见性超时定义了在消息被重新传递给另一个 Worker 之前,Worker 确认任务所需等待的秒数。如果未设置,Airflow 默认为 Redis 和 SQS 中间件提供 86400 秒(24 小时)。运行时间超过此值的任务将被终止并重新发送。请务必增加可见性超时以匹配您计划运行的最长任务的时间。visibility_timeout 仅受 Redis 和 SQS Celery 中间件支持。请参阅: https://docs.celeryq.dev/en/stable/getting-started/backends-and-brokers/redis.html#visibility-timeout
- 类型:
字符串
- 默认值:
无- 环境变量:
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
[celery_result_backend_transport_options]¶
本节用于指定可传递给底层 Celery 结果后端传输的选项。这在使用 Redis Sentinel 作为结果后端时特别有用。请参阅: https://docs.celeryq.dev/en/latest/userguide/configuration.html#std:setting-result_backend_transport_options
master_name¶
要连接的 Redis Sentinel 主节点名称。在使用 Redis Sentinel 作为结果后端时是必需的。
- 类型:
字符串
- 默认值:
无- 环境变量:
AIRFLOW__CELERY_RESULT_BACKEND_TRANSPORT_OPTIONS__MASTER_NAME- 示例:
mymaster
sentinel_kwargs¶
sentinel_kwargs 参数允许向结果后端的 Sentinel 客户端传递附加选项。在将 Redis Sentinel 用作结果后端且 Redis 服务器受密码保护的典型场景中,需要通过此参数传递密码。尽管其类型为字符串,但必须传递符合字典格式的字符串。请参阅: https://docs.celeryq.dev/en/stable/getting-started/backends-and-brokers/redis.html#configuration
- 类型:
字符串
- 默认值:
无- 环境变量:
AIRFLOW__CELERY_RESULT_BACKEND_TRANSPORT_OPTIONS__SENTINEL_KWARGSAIRFLOW__CELERY_RESULT_BACKEND_TRANSPORT_OPTIONS__SENTINEL_KWARGS_CMDAIRFLOW__CELERY_RESULT_BACKEND_TRANSPORT_OPTIONS__SENTINEL_KWARGS_SECRET- 示例:
{"password": "password_for_redis_server"}