Size: a a a

2021 April 30

GB

Georgy Borodin in Airflow
Сенсор принимает аргумент mode при инициализации.
poke – занять слот на воркере и периодически чекать, не освобождая слот
reschedule – занять слот на воркере, чекнуть и освободить слот, пока не наступит время новой проверки.

Но сама задача «мониторить в течение дня» – не про Airflow. Если какую-то логику нельзя запускать с определённой периодичностью – на Airflow это не следует делать
источник

SC

Stanislav Chernov in Airflow
У меня периодичность 5 минут, я хочу проверить - если есть файл - пустить дальше таски, если нет файла - всё, стопаем и ждём следующего запуска
источник

GB

Georgy Borodin in Airflow
Каждые 5 минут будет, конечно, чересчур: задержка шедулера даже во втором Airflow осталась, даг раны могут начать наступать себе же на пятки (конечно, это можно решить при помощи max_active_runs, но это прям неправославно)
источник

GB

Georgy Borodin in Airflow
К вопросу о том, можно ли сделать сенсор на 20 файлов: да, это же такой же питонячий код, даже если стандартные такое не будут поддерживать (не могу ни подтвердить, ни утверждать обратное), нет сложности в том, чтобы сделать свой кастомный сенсор, проверяющий n файлов
источник

SC

Stanislav Chernov in Airflow
Это да, с этим я уже подумал, через питоноператор можно сделать легко...
источник

SC

Stanislav Chernov in Airflow
А тут наверно тоже буду через питон оператор делать... зациклить просто нужно будет и всё ... на весь день
источник

GB

Georgy Borodin in Airflow
Нет смысла отказываться от наследования именно какого-нибудь сенсора, спецом во втором даже смарт сенсор запилили, чтобы слоты на воркерах поэффективнее занимать

https://airflow.apache.org/docs/apache-airflow/stable/smart-sensor.html
источник

SC

Stanislav Chernov in Airflow
Я уже попробовал смарт сенсоры, и не понял как оно работает (
источник

ME

Max Efremov in Airflow
На 20 файлов 20 сенсоров можно 😁
источник

SC

Stanislav Chernov in Airflow
лучше 1 питоноператор, который проверит ...
источник

GB

Georgy Borodin in Airflow
Я сам в проде сенсоры не использую, не было просто ещё задачи для этого.

По идее достаточно будет объявить сенсор на эти 20 файлов, дать ему reschedule раз в 5 минут (если действительно так нужно), а сам даг запускать с периодичностью, которая будет ориентироваться на то, как часто эти 20 файлов будут появляться (раз в день, раз в час, ну и т.д.)
источник

SC

Stanislav Chernov in Airflow
Ну вообще, по хорошему, он сразу должен стартануть таск при появлении всех файлов в одной папке
источник

SC

Stanislav Chernov in Airflow
Но можно и 5 минут интервал делать
источник

SC

Stanislav Chernov in Airflow
Думаю разберусь дальше, спасибо всем )
источник

GB

Georgy Borodin in Airflow
Ну это просто не про Airflow, у него в сердце концепт именно расписания, а не каких-то триггеров по эвентам
источник

ME

Max Efremov in Airflow
А сенсор же сам переодически чекает. У меня есть сенсоры на 3 дня ожидания) сами каждые 5 минут смотрят
источник

ME

Max Efremov in Airflow
Тогда да, это не совсем про airflow
источник

А

Александр in Airflow
Вчера возникла странная ситуация, надеюсь кто-то из вас сталкивался или знает как разрулить)

Даг запускает 181 таску, все 180 тасок ждут пока выполнится 1-я ну и дальше 16 воркеров разгребают остальные 180 тасок.

Из-за бага в первой таске, таска зависла в running, а остальные 180 таскок попали в scheduled.
Дальше по крону начали запускаться другие даги и абсолютно все таски также зависил в running.

После того как грохнул вот тот первый даг, который завис - все остальные даги и ихние таски начали выполнятся.

Подскажите, пожалуйста, из-за чего это прозошло? Подозреваю что из-за того что первый даг забил наглухо скедулер, если это так, то можно ли как-то ограничить скедулер? У меня стоит у самого дага concurrency=12
источник

GB

Georgy Borodin in Airflow
Вот из-за этого я шедулер и ребутаю каждые два часа))
И если честно, это пока что показывает себя лучшим решением по борьбе с деградацией шедулера.
Раньше даже был параметр в конфиге для этого, во второй версии его убрали, но я отхватил всё равно похожее на твою ситуацию
источник

GB

Georgy Borodin in Airflow
Ну и конечно, без логов-метрик что-то сванговать сложно, может шедулер и не виноват, но обычно гадит либо он, либо плохой код в даге)
источник