CeleryExecutor:气流指标 "executor.queued_tasks" 是否报告 celery 代理中的任务数?

CeleryExecutor: Does the airflow metric "executor.queued_tasks" report the number of tasks in the celery broker?

使用其 statsd plugin,Airflow 可以报告指标 executor.queued_tasks 以及其他指标。

我正在使用 CeleryExecutor 并且需要知道 Celery 代理中有多少任务在等待,所以我知道什么时候应该产生新的工人。事实上,我设置我的工人,使他们不能同时处理许多任务。这个指标是我需要的吗?

没有。如果您想知道有多少 TI 在代理中等待,您必须连接到它。

等待在 celery 代理中被拾取的任务实例根据 Airflow DB 排队,但 运行 根据 CeleryExecutor 排队。这是因为 CeleryExecutor 认为任何成功发送到 broker 的任务实例现在是 运行(不像 DB,DB 会等待 worker 将其拾取然后标记为 运行)。

指标executor.queued_tasks 报告根据执行程序而不是数据库排队的任务数。

根据 DB 的排队任务实例数也不完全是您需要的,因为它报告了在代理中等待的任务实例数 加上 数量排队等待执行者的任务实例。但是你问 TI 什么时候会卡在执行者的队列中?当 Airflow 的 parallelism 设置阻止执行者将它们发送给代理时。