Вопрос проверяет умение выбирать сенсоры осознанно и понимать, когда они оправданы, а когда вредят системе.
Сенсоры имеет смысл использовать, когда нужно дождаться внешнего события перед продолжением workflow. Это может быть появление данных, завершение другого DAG или готовность внешнего сервиса. Они полезны для синхронизации пайплайнов. Сенсоры не подходят для длительного ожидания без крайней необходимости. В таких случаях лучше искать событийные или асинхронные альтернативы.
Сенсоры — мощный инструмент, но при неправильном использовании они могут стать источником проблем с производительностью и ресурсами.
Sensor usage pattern — это сценарий, в котором ожидание внешнего условия оправдано архитектурно.
Сенсоры хорошо подходят, когда:
Например:
данные загружаются сторонней системой;
запуск следующего шага без них невозможен.
Частый кейс:
один DAG подготавливает данные;
второй DAG ждёт завершения первого.
Для этого часто используют ExternalTaskSensor.
Сенсоры плохо подходят, если:
часы или дни ожидания;
большое количество одновременно «висящих» сенсоров.
Это создаёт нагрузку на систему.
Если внешний сервис может:
отправить событие;
дернуть API;
положить сообщение в очередь.
В таких случаях лучше:
запускать DAG по событию;
использовать Kafka или webhook.
всегда задавайте разумный timeout;
увеличивайте poke_interval для редких проверок;
используйте deferrable-сенсоры при долгом ожидании.
Сенсоры стоит использовать, когда без ожидания невозможно продолжить workflow. Для долгих ожиданий и массовых зависимостей лучше выбирать асинхронные или событийные решения.