"Последние года 4 я использовал Apache Airflow исключительно в облаке, преимущественно в Amazon — Amazon Managed Apache Airflow. И как обычно бывает, в облаках всё так или иначе между собой связано. Логи хранятся в Cloud Watch, воркеры запускаются в изолированной среде (Amazon Fargate). С июля месяца я стал активно использовать self-hosted Airflow на своих серверах (для своих личных целей), и в целях экономии храню всё в файлах. Так уж получилось, что задачу с регулярной ""чисткой"" я постоянно откладывал и вот настал час X, когда всё легко из-за исчерпания inodes в файловой системе. Для этого случая я написал DAG, который каждый день в полночь чистит папки со старыми логами, делюсь с вами вдруг он пригодится: ```import os import shutil from datetime import datetime, timedelta import pendulum import structlog from airflow.sdk import DAG, task logger = structlog.get_logger(__name__) @task def cleanup_airflow_logs(days_to_keep): log_base_path = os.environ.get(""AIRFLOW_HOME"", ""/opt/airflow"") + ""/logs"" cutoff_date = datetime.now() - timedelta(days=days_to_keep) for root, dirs, files in os.walk(log_base_path): for dir_name in dirs: dir_path = os.path.join(root, dir_name) try: if os.path.getmtime(dir_path) < cutoff_date.timestamp(): logger.info(f""Deleting old log directory: {dir_path}"") shutil.rmtree(dir_path) except Exception as e: logger.error(f""Error deleting directory {dir_path}: {e}"") with DAG( dag_id=""airflow_log_cleanup_dag"", start_date=pendulum.datetime(2025, 10, 1, tz=""Asia/Almaty""), schedule=""@daily"", # Run daily at midnight catchup=False, default_args={ ""owner"": ""airflow"", ""retries"": 2, ""retry_delay"": timedelta(minutes=5), }, max_active_runs=1, ) as dag: cleanup_airflow_logs(days_to_keep=14)``` Здесь учитывается стандартный шаблон именования логов и директорий, включающий дату и время. Я по привычке использую `structlog` для ведения логов."
"Последние года 4 я использовал Apache Airflow исключительно в облаке,…
Из этого канала
- #651Очередной подгон в виде бесплатной книги от Astronomer — Orchestrating dbt with…
Очередной подгон в виде бесплатной книги от Astronomer — Orchestrating dbt with Apache Airflow® using Cosmos 🚀 Неплохой вводный гайд по оркестрации dbt…
- #652Apache Airflow 3 в Amazon Cloud На Amazon стала доступна 3-я версия Apache…
Apache Airflow 3 в Amazon Cloud На Amazon стала доступна 3-я версия Apache Airflow: Introducing Apache Airflow 3 on Amazon MWAA: New features and capabilities…
- #653"Как я чищу метаданные Apache Airflow 3.x В блоге Apache Airflow есть скрипт…
"Как я чищу метаданные Apache Airflow 3.x В блоге Apache Airflow есть скрипт для периодической чистки метаданных в БД Apache Airflow.
- #649Python 3.14 уже здесь! Пару часов назад вышел финальный релиз новой версии…
Python 3.14 уже здесь! Пару часов назад вышел финальный релиз новой версии Python 3.14. Это, пожалуй, один из самых мощных релизов на моей памяти.
- #648Что происходит в LLM. Октябрь 2025 Несмотря на то, что LLM — главный хайп…
Что происходит в LLM. Октябрь 2025 Несмотря на то, что LLM — главный хайп последних 2 лет, вокруг больших моделей остаётся много путаницы и заблуждений.