首页 > 解决方案 > CeleryExecutor:气流指标“executor.queued_tasks”是否报告 celery 代理中的任务数?

问题描述

使用它的statsd 插件,Airflow 可以报告指标executor.queued_tasks以及其他一些指标。

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

标签: celeryairflow

解决方案


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

等待在 celery 代理中获取的任务实例根据 Airflow DB 排队,但根据 CeleryExecutor 运行。这是因为 CeleryExecutor 认为任何成功发送到代理的任务实例现在都在运行(与数据库不同,数据库在将其标记为运行之前等待工作人员将其拾取)。

Metricexecutor.queued_tasks根据执行者而不是数据库报告排队的任务数。

根据数据库排队的任务实例的数量也不是您所需要的,因为它报告了在代理中等待的任务实例的数量加上排队到执行器的任务实例的数量。但是你问,TI 什么时候会被困在执行者的队列中?当parallelismAirflow 的设置阻止 executor 将它们发送到 broker 时。


推荐阅读