Интервал синтаксического анализа DAG по умолчанию довольно прост: 5 минут.Но даже это довольно много для большинства людей, поэтому вполне разумно увеличить это, если ваше развертывание не слишком близко к срокам для новых DAG.
В общем, я бы сказал, что это не тактак плохо делать REST-запрос при каждом биении разбора DAG.Кроме того, в настоящее время процесс планирования отделен от процесса синтаксического анализа, что не влияет на скорость планирования ваших задач.Airflow кеширует определение DAG для вас.
Если вы считаете, что у вас все еще есть причины поставить свой собственный кеш поверх этого, я предлагаю кэшировать на сервере определений, а не на стороне Airflow.Например, используя заголовки кеша на конечной точке REST и самостоятельно обрабатывая аннулирование кеша, когда вам это нужно.Но это может быть некоторой преждевременной оптимизацией, поэтому я советую начинать без нее и реализовывать ее, только если вы измеряете убедительные доказательства того, что она вам нужна.
РЕДАКТИРОВАТЬ : относительно веб-сервера и рабочего
Это правда, что веб-сервер также будет запускать анализ DAG, не зная, как часто.Вероятно, после интервала обновления рабочих Guicorn (который по умолчанию составляет 30 секунд).Рабочие будут делать это также по умолчанию в начале каждой задачи, но это можно сохранить, если активировать травление DAG.Хотя я не уверен, что это хорошая идея, я слышал, что это что-то, что не рекомендуется использовать.
Еще одна вещь, которую вы можете попытаться сделать, это кэшировать это в самом процессе Airflow, запоминая функцию, которая делаетдорогой запрос.Для этого в Python есть встроенные функции functools (lru_cache
), и вместе с травлением это может быть достаточно и намного проще, чем другие варианты.