Вопрос проверяет знание современных возможностей Airflow и умение оптимизировать использование ресурсов.
Обычные сенсоры постоянно занимают worker во время ожидания. Deferrable-сенсоры освобождают worker и «засыпают» до наступления события. Они используют асинхронную модель ожидания. Это позволяет существенно снизить нагрузку на систему. Deferrable-сенсоры лучше подходят для долгих ожиданий.
Deferrable-сенсоры появились как решение проблемы блокировки ресурсов при долгом ожидании внешних условий.
Deferrable sensor — это сенсор, который использует асинхронный механизм ожидания и не блокирует worker.
Классический сенсор:
запускается на worker-е;
выполняет polling;
«спит» между проверками;
удерживает слот executor-а.
Проблема:
worker занят, хотя полезной работы нет.
Deferrable-сенсор:
выполняет первую проверку;
если условие не выполнено, деферрится;
освобождает worker;
возобновляется при наступлении события или по таймеру.
Для этого используется:
triggerer-процесс;
асинхронные триггеры.
Triggerer:
отдельный компонент Airflow;
отслеживает события асинхронно;
«будит» задачу, когда условие выполнено.
Это позволяет:
держать тысячи ожидающих сенсоров;
не увеличивать число worker-ов.
Они особенно полезны:
при ожидании внешних API;
при долгих таймаутах;
в больших инсталляциях Airflow.
Ограничение:
не все сенсоры имеют deferrable-версию;
сложнее отлаживать.
используйте deferrable-сенсоры для ожиданий > нескольких минут;
проверяйте, поддерживает ли оператор deferrable-режим;
следите за нагрузкой triggerer-а.
Deferrable-сенсоры решают ключевую проблему классических сенсоров — блокировку ресурсов. Для современных продакшен-систем это предпочтительный вариант при длительном ожидании условий.