| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Главная Продукция Дробеструйные аппараты Таблица расходов воздуха, абразива, сопла, шланги
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Коэффициент сжимаемости воздуха: таблица и значения
Коэффициент сжимаемости воздуха – это показатель степени сжимаемости воздуха в зависимости от давления и температуры. Используется при проведении расчетов параметров работы в средствах индивидуальной защиты органов дыхания. Обозначается: Ксж.
Коэффициент сжимаемости воздуха (далее – коэффициент) используется при расчете времени работы в средствах индивидуальной защиты органов дыхания и зрения (далее – СИЗОД), и предназначен для определения реального объема закачанного в баллоны воздуха.
где:
Vвозд – реальный объем сжатого воздуха в баллонах, л;
Vб – объем баллонов, л;
P – давление в баллонах, атм.
Коэффициент при любых условиях расчета параметров работы в СИЗОД принимается равным 1,1.
Таким образом, зная реальный запас воздуха в баллонах, можно легко вычислить время работы газодымозащитника в СИЗОД. Для этого достаточно разделить реальный запас воздуха на его расход газодымозащитником (в общем случае принимается среднее значение – 40 л/мин):
В общем же виде эта формула приобретает вид:
И в такой трактовке приводится в методических указаниях по проведению расчетов параметров работы в СИЗОД.
Физические основы
Сжимаемость характеризует свойство воздуха изменять свой объем и плотность при изменении давления и температуры. Если вещество в процессе сжатия не испытывает химических, структурных и других изменений, то при возвращении внешнего давления к исходному значению начальный объём восстанавливается.
Термин «сжимаемость» также используется в термодинамике для описания отклонений термодинамических свойств реальных газов от свойств идеальных газов. Коэффициент сжимаемости определяется как:
где:
p – давление газа;
T – температура;
V – молярный объём.
Коэффициент зависит как от температуры вещества, так и от давления. Таким образом, при давлениях 200 атм и 300 атм коэффициент будет разным. При этом даже при различной температуре воздуха коэффициент так же меняется!
Таблица значений коэффициента
Значения коэффициента сжимаемости воздуха при различных давлениях и температурах
Примечание:
- голубой цвет – данные получены интерполяцией экспериментальных значений;
- серый цвет – экспериментальные значения;
- жирным текстом с подчеркиванием выделены значения наиболее интересные с точки зрения ГДЗС.
Зависимость коэффициента сжимаемости воздуха от давления (по оси X, атм.) и температуры (согласно графиков)
Скачать таблицу и график зависимости коэффициента сжимаемости воздуха в формате Microsoft Excel
Из приведенной информации видно, что в большинстве интересующих ГДЗС случаев, коэффициент отличается от единицы на тысячные доли, что может быть пренебрежимо. И только при давлениях приближающихся к 300 атмосферам, он начинает увеличиваться и приближаться к 1,1 используемому в расчетах.
Важно понимать, что расчет реального запаса сжатого воздуха уместно делать только в момент, когда баллон только что был наполнен, так как в дальнейшем при работе в аппарате, воздух расходуется, давление в баллонах уменьшается, а следовательно и коэффициенты изменяются. Именно поэтому, сейчас, при расчетах для ДАСВ коэффициент принимается равным 1,1 (так как рабочее давление баллонов достигает 300 атм) при любых условиях, а для ДАСК – 1 (давление баллонов не превышает 200 атм). По этой же причине ранее, в расчетах, для дыхательных аппаратов АИР-2, коэффициент принимался 1 – так как рабочее давление в баллонах данного ДАСВ было 200 атм.
Источники:
- Методические указания по проведению расчетов параметров работы в средствах индивидуальной защиты органов дыхания и зрения.
- Основные параметры и свойства воздуха в атмосфере.
- Большая советская энциклопедия: сжимаемость.
- Коэффициент сжимаемости (en).
Понимание базы данных метаданных Airflow
База данных метаданных является основным компонентом Airflow. В нем хранится важная информация, такая как конфигурация ролей и разрешений вашей среды Airflow, а также все метаданные для прошлых и настоящих DAG и запусков задач.
Исправная база метаданных имеет решающее значение для вашей среды Airflow. Потеря данных, хранящихся в базе данных метаданных, может помешать запуску DAG и помешать вам получить доступ к данным для прошлых запусков DAG. Как и в случае с любым основным компонентом Airflow, крайне важно иметь план резервного копирования и аварийного восстановления базы данных метаданных.
В этом руководстве вы узнаете все, что вам нужно знать о базе данных метаданных Airflow для обеспечения здоровой среды Airflow, в том числе:
- Спецификации базы данных.
- Важный контент хранится в базе данных.
- Рекомендации по использованию базы данных метаданных.
- Различные методы доступа к интересующим данным.
Предполагаемые знания
Чтобы получить максимальную отдачу от этого руководства, вы должны понимать:
- Основные концепции воздушного потока. См. Введение в Apache Airflow.
- Основные компоненты воздушного потока. См. Компоненты Airflow.
Спецификации базы данных
Airflow использует SQLAlchemy и объектно-реляционное сопоставление (ORM) в Python для соединения с базой данных метаданных с прикладного уровня. Любая база данных, поддерживаемая SQLAlchemy, теоретически может быть настроена для размещения метаданных Airflow. Наиболее часто используемые базы данных:
- Postgres
- MySQL
- MSSQL
- SQLite
В то время как SQLite используется по умолчанию в Apache Airflow, Postgres на сегодняшний день является наиболее распространенным выбором и рекомендуется для большинства случаев использования сообществом Airflow. Astronomer использует Postgres для всех своих сред Airflow, включая локальные среды, работающие с Astro CLI, и развернутые среды в облаке.
При настройке среды Airflow также следует учитывать размер базы данных метаданных. В рабочих средах обычно используется служба управляемой базы данных, которая включает в себя такие функции, как автоматическое масштабирование и автоматическое резервное копирование. Необходимый размер будет сильно зависеть от рабочих нагрузок, выполняемых в вашем экземпляре Airflow. Для справки, Apache Airflow по умолчанию использует базу данных SQLite размером 2 ГБ, но она предназначена только для целей разработки. Astro CLI запускает среды Airflow с базой данных Postgres объемом 1 ГБ.
Изменения в конфигурации базы данных метаданных Airflow и ее схеме очень распространены и происходят почти с каждым незначительным обновлением. По этой причине до Airflow 2.3 вам не следует понижать версию вашего экземпляра Airflow на месте. В Airflow 2.3 была добавлена команда db downgrade
, предоставляющая возможность понизить Airflow.
Содержимое базы данных метаданных
В базе данных метаданных хранится несколько типов метаданных.
- Информация для входа и разрешения пользователя.
- Информация, используемая в DAG, например переменные, соединения и XCom.
- Данные о DAG и запусках задач, генерируемые планировщиком.
- Другие второстепенные таблицы, такие как таблицы, в которых хранится код DAG в различных форматах или информация об ошибках импорта.
Во многих случаях вы можете получить доступ к содержимому из базы данных метаданных в пользовательском интерфейсе Airflow или стабильном REST API. Эти точки доступа всегда превосходят запросы к базе данных метаданных напрямую!
Информация о пользователе (безопасность)
В наборе таблиц хранится информация о пользователях Airflow, включая их права доступа к различным функциям Airflow. Как пользователь-администратор вы можете получить доступ к некоторому содержимому этих таблиц в пользовательском интерфейсе Airflow на вкладке Security .
Конфигурации и переменные группы обеспечения доступности баз данных (администратор)
Группы обеспечения доступности баз данных могут извлекать и использовать различную информацию из базы данных метаданных, например:
- Переменные.
- Соединения.
- XComs.
- Бассейны.
Информацию в этих таблицах можно просмотреть и изменить на вкладке Admin в пользовательском интерфейсе Airflow.
DAG и выполнение задач (просмотр)
Планировщик зависит от базы данных метаданных Airflow для отслеживания прошлых и текущих событий. Большинство этих данных можно найти на вкладке Browse в пользовательском интерфейсе Airflow.
- Запуски DAG хранит информацию обо всех прошлых и текущих запусках DAG, в том числе об их успешности, запланированных или запущенных вручную, а также подробную информацию о времени.
- Jobs содержит данные, используемые планировщиком для хранения информации о прошлых и текущих заданиях разных типов (
SchedulerJob
,TriggererJob
,LocalTaskJob
). - Журналы аудита показывают события различных типов, которые были зарегистрированы в базе данных метаданных (например, приостановка групп обеспечения доступности баз данных или выполнение задач).
- Экземпляры задач содержит запись о каждой запущенной задаче с различными атрибутами, такими как вес приоритета, продолжительность или URL-адрес журнала задач.
- Перепланирование задач перечисляет задачи, которые были перепланированы.
- Триггеры показывает все запущенные в данный момент триггеры.
- SLA Misses отслеживает задачи, которые не соответствуют SLA.
Другие таблицы
В базе данных метаданных есть дополнительные таблицы, в которых хранятся данные, начиная от тегов DAG и сериализованного кода DAG, ошибок импорта до текущих состояний датчиков. Некоторая информация из этих таблиц будет видна в пользовательском интерфейсе Airflow в разных местах:
- Исходный код DAG можно найти, щелкнув имя DAG в главном представлении и перейдя в представление Code .
- Ошибки импорта появляются в верхней части представления DAG в пользовательском интерфейсе.
- Теги DAG будут отображаться под соответствующими DAG на голубом фоне.
Рекомендации по работе с базой данных метаданных Airflow
При обновлении или понижении версии Airflow всегда выполняйте рекомендуемые действия по изменению версий Airflow: создайте резервную копию базы данных метаданных, проверьте наличие устаревших функций, приостановите все DAG и убедитесь, что нет задач. Бег.
Будьте осторожны при удалении старых записей из базы данных с помощью
db clean
. Например, сокращение записей может повлиять на будущие запуски задач, использующих аргументdepend_on_past
. Командаdb clean
позволяет удалить записи старше--clean-before-timestamp
из всех таблиц базы данных метаданных или списка указанных таблиц.Для доступа к базе данных метаданных из группы обеспечения доступности баз данных (например, путем извлечения переменной, извлечения из XCom или использования идентификатора соединения) требуются вычислительные ресурсы.
Поэтому рекомендуется сохранять эти действия внутри задач, что создает соединение с базой данных только во время выполнения задачи. Если эти соединения записываются как код верхнего уровня, соединения создаются каждый раз, когда планировщик анализирует файл DAG, что по умолчанию происходит каждые 30 секунд!
Память в базе данных метаданных Airflow может быть ограничена в зависимости от ваших настроек, а нехватка памяти в базе данных метаданных может вызвать проблемы с производительностью в Airflow. Это одна из многих причин, по которым Astronomer не рекомендует перемещать большие объемы данных с помощью XCom и рекомендует использовать механизм очистки и архивирования в любых производственных развертываниях.
Поскольку база данных метаданных имеет решающее значение для масштабируемости и отказоустойчивости вашего развертывания Airflow, рекомендуется использовать службу управляемой базы данных для производственных сред, например AWS RDS или Google Cloud SQL.
При настройке серверной части базы данных убедитесь, что ваша версия полностью поддерживается, проверив документацию Airflow.
Никогда не изменяйте напрямую базу данных метаданных, за исключением крайне редких случаев, так как это может вызвать проблемы с зависимостями и повредить ваш экземпляр Airflow.
Примеры программного доступа к базе данных метаданных
Когда это возможно, лучшими методами извлечения данных из базы данных метаданных являются использование пользовательского интерфейса Airflow или выполнение запроса GET к стабильному REST API Airflow. Между пользовательским интерфейсом и API большая часть базы данных метаданных может быть просмотрена без риска, связанного с прямыми запросами. Для случаев использования, когда ни пользовательский интерфейс Airflow, ни REST API не могут предоставить достаточно данных, Astronomer рекомендует использовать SQLAlchemy для запроса базы данных метаданных. Это обеспечивает дополнительный уровень абстракции поверх таблиц, что делает ваш код менее чувствительным к незначительным изменениям схемы.
В этом разделе руководства вы узнаете, как можно получить конкретную информацию из базы данных метаданных.
Получение количества успешно выполненных задач
Обычной причиной, по которой пользователи могут захотеть получить доступ к базе данных метаданных, является получение таких показателей, как общее количество успешно выполненных задач.
Использование стабильного REST API для запросов к базе данных метаданных является рекомендуемым способом программного извлечения этой информации. Убедитесь, что вы правильно разрешили использование API в своем экземпляре Airflow, и установите ENDPOINT_URL
в нужное место (для локальной разработки: http://localhost:8080/
).
Приведенный ниже сценарий Python использует библиотеку запросов
для выполнения запроса GET к API Airflow для всех успешных ( state=success
) экземпляров задач всех (сокращенно: ~
) запусков DAG всех ( ~
) DAG в экземпляре Airflow. Имя пользователя и пароль, хранящиеся в качестве переменных среды, используются для аутентификации. Распечатав
total_entries
ответа API json можно получить количество всех успешно выполненных задач.
# импортировать библиотеку запросов
импортировать запросы
import os# указать местоположение вашего экземпляра воздушного потока
ENDPOINT_URL = "http://localhost:8080/"# в этом примере переменные env использовались для хранения информации для входа
# вам нужно будет указать свои учетные данные
user_name = os.environ['USERNAME_AIRFLOW_INSTANCE']
password = os.environ['PASSWORD_AIRFLOW_INSTANCE']# запросить у API успешные экземпляры задач из всех дагов и всех запусков дагов (~)
req = request.get(
f"{ENDPOINT_URL}/api/v1/dags/~/dagRuns/~/taskInstances?state= success",
auth=(user_name, password))# из ответа API вывести значение "общего количества записей"
print(req.json()['total_entries'])
Также возможно перейдите к Просмотрите -> Экземпляры задач в пользовательском интерфейсе Airflow и отфильтруйте экземпляры задач для всех с состоянием успех
.
Record Count
будет отображаться в правой части экрана.
Приостановка и возобновление работы группы обеспечения доступности баз данных
Приостановка и возобновление работы группы обеспечения доступности баз данных является обычным действием при запуске Airflow, хотя вы можете добиться этого, вручную переключая группы обеспечения доступности баз данных в пользовательском интерфейсе Airflow, в зависимости от вашего варианта использования и количества требуемых групп обеспечения доступности баз данных. переключать это может быть утомительно. REST API Airflow предлагает простой способ приостановить и возобновить работу DAG, отправив запрос PATCH.
Приведенный ниже сценарий Python отправляет запрос PATCH в API Airflow, чтобы обновить запись для DAG с определенным идентификатором (здесь example_dag_basic
), который приостановлен ( update_mask=is_paused
) с помощью json, который установит для свойства is_paused
значение True
, поэтому приостанавливает DAG.
# импортировать библиотеку запросов
импортировать запросы
import os# указать местоположение вашего экземпляра воздушного потока
ENDPOINT_URL = "http://localhost:8080/"# в этом примере переменные env использовались для хранения информации для входа
# вам нужно будет предоставить свои учетные данные
user_name = os.environ['USERNAME_AIRFLOW_INSTANCE']
password = os.environ['PASSWORD_AIRFLOW_INSTANCE']# данные для обновления, для возобновления паузы просто установите значение False
update= {"is_paused": True}
# укажите даг для приостановки/возобновления паузы
dag_id = example_dag_basic# запросите у API исправление всех задач как приостановленных
req = request.patch(
f"{ENDPOINT_URL}/api/v1/dags/{dag_id}?update_mask=is_paused" , json=update,
auth=(user_name, password))# распечатать ответ API
print(req.text)
Удалить группу обеспечения доступности баз данных
Удалить метаданные группы обеспечения доступности баз данных можно либо щелкнув значок корзины
в пользовательском интерфейсе Airflow, либо отправив DELETE
запрос с помощью REST API Airflow. Это невозможно, пока DAG все еще работает, и не удалит файл Python, в котором определена DAG, что означает, что DAG снова появится в вашем пользовательском интерфейсе без истории при следующем анализе
/dags
из планировщика.
Приведенный ниже скрипт Python отправляет запрос DELETE в группу обеспечения доступности баз данных с определенным идентификатором (здесь: dag_to_delete
).
# импортировать библиотеку запросов
импортировать запросы
import os# указать местоположение вашего экземпляра воздушного потока
ENDPOINT_URL = "http://localhost:8080/"# в этом примере переменные env использовались для хранения информации для входа
# вам нужно будет указать свои учетные данные
user_name = os.environ['USERNAME_AIRFLOW_INSTANCE']
password = os.environ['PASSWORD_AIRFLOW_INSTANCE']# указать, какой даг удалить
dag_id = 'dag_to_delete'# отправить запрос на удаление dags/{dag_id}",
auth=(user_name, password))# распечатать ответ API
print(req.text)
Получить все зависимости DAG поднимите оркестровку данных на новый уровень. Извлечение данных о зависимостях между несколькими группами доступности баз данных из базы данных метаданных может быть полезно для программной реализации пользовательских решений, например, чтобы убедиться, что подчиненные группы обеспечения доступности баз данных приостанавливаются, если приостанавливается восходящая группа обеспечения доступности баз данных. Эти зависимости можно визуализировать в пользовательском интерфейсе Airflow под
Просмотрите -> Зависимости DAG , но они недоступны через REST API Airflow.Чтобы программно получить доступ к этой информации, вы можете использовать SQLAlchemy с моделями Airflow для доступа к данным из базы данных метаданных. Обратите внимание, что если вы используете Airflow в настройках Dockerized, вам необходимо запустить приведенный ниже сценарий из контейнера планировщика.
из sqlalchemy import create_engine
из sqlalchemy.orm import Session
из airflow.models.serialized_dag import SerializedDagModel
import os# извлечение соединения SQL Alchemy
# если вы используете Astro CLI, эта переменная env будет настроена автоматическиengine = create_engine(conn_url)
с Session(engine) в качестве сеанса:
result = session.query(SerializedDagModel).first()
print(result.get_dag_dependencies())
Получить версию перегонного куба
В очень редких случаях вам может понадобиться значение из базы данных метаданных, которое недоступно ни одним из рассмотренных вами методов. В этом случае вы можете запросить базу данных метаданных напрямую. Прежде чем вы это сделаете, помните, что вы можете повредить свой экземпляр Airflow, напрямую манипулируя базой данных метаданных, особенно если схема меняется между обновлениями.
Приведенный ниже запрос извлекает идентификатор текущей версии перегонного куба, который недоступен ни одним из рекомендуемых способов взаимодействия с базой данных метаданных. Администраторам баз данных может понадобиться идентификатор версии для сложных операций переноса данных.
from sqlalchemy import create_engine
from sqlalchemy.orm import Session
import os# извлечение соединения SQL Alchemy
# если вы используете Astro CLI, эта переменная env будет настроена автоматически
sql_alchemy_conn = os.environ['AIRFLOW__CORE__NSQL'ALCHEMY]conn_url = f'{sql_alchemy_conn}/postgres'
engine = create_engine(conn_url)
# это прямой запрос к базе метаданных: используйте на свой страх и риск!
stmt = """ВЫБЕРИТЕ version_num
FROM alembic_version;"""с Session(engine) as session:
result = session.execute(stmt)
print(result.all()[0][0])
Понимание базы данных метаданных Airflow
База данных метаданных является основным компонентом Airflow. В ней хранится важная информация, такая как конфигурация ролей и разрешений вашей среды Airflow, а также все метаданные для прошлых и настоящих DAG и запусков задач.
Исправная база метаданных имеет решающее значение для вашей среды Airflow. Потеря данных, хранящихся в базе данных метаданных, может помешать запуску DAG и лишить вас доступа к данным для прошлых запусков DAG. Как и в случае с любым основным компонентом Airflow, наличие плана резервного копирования и аварийного восстановления для базы данных метаданных необходимо
В этом руководстве вы узнаете все, что вам нужно знать о базе данных метаданных Airflow для обеспечения здоровой среды Airflow, в том числе:
- Спецификации базы данных.
- Важный контент хранится в базе данных.
- Рекомендации по использованию базы данных метаданных.
- Различные методы доступа к интересующим данным.
Предполагаемые знания
Чтобы получить максимальную отдачу от этого руководства, вы должны понимать:
- Основные концепции воздушного потока. См. Введение в Apache Airflow.
- Основные компоненты воздушного потока.
См. Компоненты Airflow.
Спецификации базы данных
Airflow использует SQLAlchemy и объектно-реляционное сопоставление (ORM) в Python для соединения с базой данных метаданных с прикладного уровня. Любая база данных, поддерживаемая SQLAlchemy, теоретически может быть настроена для размещения метаданных Airflow. Наиболее часто используемые базы данных:
- Postgres
- MySQL
- MSSQL
- SQLite
В то время как SQLite используется по умолчанию в Apache Airflow, Postgres на сегодняшний день является наиболее распространенным выбором и рекомендуется для большинства случаев использования сообществом Airflow. Astronomer использует Postgres для всех своих сред Airflow, включая локальные среды, работающие с Astro CLI, и развернутые среды в облаке.
При настройке среды Airflow также следует учитывать размер базы данных метаданных. В рабочих средах обычно используется служба управляемой базы данных, которая включает в себя такие функции, как автоматическое масштабирование и автоматическое резервное копирование. Необходимый размер будет сильно зависеть от рабочих нагрузок, выполняемых в вашем экземпляре Airflow. Для справки, Apache Airflow по умолчанию использует базу данных SQLite размером 2 ГБ, но она предназначена только для целей разработки. Astro CLI запускает среды Airflow с базой данных Postgres объемом 1 ГБ.
Изменения в конфигурации базы данных метаданных Airflow и ее схеме очень распространены и происходят почти с каждым незначительным обновлением. По этой причине до Airflow 2.3 вам не следует понижать версию вашего экземпляра Airflow на месте. В Airflow 2.3 была добавлена команда db downgrade
, предоставляющая возможность понизить Airflow.
Содержимое базы данных метаданных
В базе данных метаданных хранится несколько типов метаданных.
- Информация для входа и разрешения пользователя.
- Информация, используемая в DAG, например переменные, соединения и XCom.
- Данные о DAG и запусках задач, генерируемые планировщиком.
- Другие второстепенные таблицы, такие как таблицы, в которых хранится код DAG в различных форматах или информация об ошибках импорта.
Во многих случаях вы можете получить доступ к содержимому из базы данных метаданных в пользовательском интерфейсе Airflow или стабильном REST API. Эти точки доступа всегда превосходят запросы к базе данных метаданных напрямую!
Информация о пользователе (безопасность)
В наборе таблиц хранится информация о пользователях Airflow, включая их права доступа к различным функциям Airflow. Как пользователь-администратор вы можете получить доступ к некоторому содержимому этих таблиц в пользовательском интерфейсе Airflow на вкладке Security .
Конфигурации и переменные группы обеспечения доступности баз данных (администратор)
Группы обеспечения доступности баз данных могут извлекать и использовать различную информацию из базы данных метаданных, например:
- Переменные.
- Соединения.
- XComs.
- Бассейны.
Информацию в этих таблицах можно просмотреть и изменить на вкладке Admin в пользовательском интерфейсе Airflow.
DAG и выполнение задач (просмотр)
Планировщик зависит от базы данных метаданных Airflow для отслеживания прошлых и текущих событий. Большинство этих данных можно найти на вкладке Browse в пользовательском интерфейсе Airflow.
- Запуски DAG хранит информацию обо всех прошлых и текущих запусках DAG, в том числе об их успешности, запланированных или запущенных вручную, а также подробную информацию о времени.
- Jobs содержит данные, используемые планировщиком для хранения информации о прошлых и текущих заданиях разных типов (
SchedulerJob
,TriggererJob
,LocalTaskJob
). - Журналы аудита показывают события различных типов, которые были зарегистрированы в базе данных метаданных (например, приостановка групп обеспечения доступности баз данных или выполнение задач).
- Экземпляры задач содержит запись о каждой запущенной задаче с различными атрибутами, такими как вес приоритета, продолжительность или URL-адрес журнала задач.
- Перепланирование задач перечисляет задачи, которые были перепланированы.
- Триггеры показывает все запущенные в данный момент триггеры.
- SLA Misses отслеживает задачи, которые не соответствуют SLA.
Другие таблицы
В базе данных метаданных есть дополнительные таблицы, в которых хранятся данные, начиная от тегов DAG и сериализованного кода DAG, ошибок импорта до текущих состояний датчиков. Некоторая информация из этих таблиц будет видна в пользовательском интерфейсе Airflow в разных местах:
- Исходный код DAG можно найти, щелкнув имя DAG в главном представлении и перейдя в представление Code .
- Ошибки импорта появляются в верхней части представления DAG в пользовательском интерфейсе.
- Теги DAG будут отображаться под соответствующими DAG на голубом фоне.
Рекомендации по работе с базой данных метаданных Airflow
При обновлении или понижении версии Airflow всегда выполняйте рекомендуемые действия по изменению версий Airflow: создайте резервную копию базы данных метаданных, проверьте наличие устаревших функций, приостановите все DAG и убедитесь, что нет задач. Бег.
Будьте осторожны при удалении старых записей из базы данных с помощью
db clean
. Например, сокращение записей может повлиять на будущие запуски задач, использующих аргументdepend_on_past
. Командаdb clean
позволяет удалить записи старше--clean-before-timestamp
из всех таблиц базы данных метаданных или списка указанных таблиц.Для доступа к базе данных метаданных из группы обеспечения доступности баз данных (например, путем извлечения переменной, извлечения из XCom или использования идентификатора соединения) требуются вычислительные ресурсы.
Поэтому рекомендуется сохранять эти действия внутри задач, что создает соединение с базой данных только во время выполнения задачи. Если эти соединения записываются как код верхнего уровня, соединения создаются каждый раз, когда планировщик анализирует файл DAG, что по умолчанию происходит каждые 30 секунд!
Память в базе данных метаданных Airflow может быть ограничена в зависимости от ваших настроек, а нехватка памяти в базе данных метаданных может вызвать проблемы с производительностью в Airflow. Это одна из многих причин, по которым Astronomer не рекомендует перемещать большие объемы данных с помощью XCom и рекомендует использовать механизм очистки и архивирования в любых производственных развертываниях.
Поскольку база данных метаданных имеет решающее значение для масштабируемости и отказоустойчивости вашего развертывания Airflow, рекомендуется использовать службу управляемой базы данных для производственных сред, например AWS RDS или Google Cloud SQL.
При настройке серверной части базы данных убедитесь, что ваша версия полностью поддерживается, проверив документацию Airflow.
Никогда не изменяйте напрямую базу данных метаданных, за исключением крайне редких случаев, так как это может вызвать проблемы с зависимостями и повредить ваш экземпляр Airflow.
Примеры программного доступа к базе данных метаданных
Когда это возможно, лучшими методами извлечения данных из базы данных метаданных являются использование пользовательского интерфейса Airflow или выполнение запроса GET к стабильному REST API Airflow. Между пользовательским интерфейсом и API большая часть базы данных метаданных может быть просмотрена без риска, связанного с прямыми запросами. Для случаев использования, когда ни пользовательский интерфейс Airflow, ни REST API не могут предоставить достаточно данных, Astronomer рекомендует использовать SQLAlchemy для запроса базы данных метаданных. Это обеспечивает дополнительный уровень абстракции поверх таблиц, что делает ваш код менее чувствительным к незначительным изменениям схемы.
В этом разделе руководства вы узнаете, как можно получить конкретную информацию из базы данных метаданных.
Получение количества успешно выполненных задач
Обычной причиной, по которой пользователи могут захотеть получить доступ к базе данных метаданных, является получение таких показателей, как общее количество успешно выполненных задач.
Использование стабильного REST API для запросов к базе данных метаданных является рекомендуемым способом программного извлечения этой информации. Убедитесь, что вы правильно разрешили использование API в своем экземпляре Airflow, и установите ENDPOINT_URL
в нужное место (для локальной разработки: http://localhost:8080/
).
Приведенный ниже сценарий Python использует библиотеку запросов
для выполнения запроса GET к API Airflow для всех успешных ( state=success
) экземпляров задач всех (сокращенно: ~
) запусков DAG всех ( ~
) DAG в экземпляре Airflow. Имя пользователя и пароль, хранящиеся в качестве переменных среды, используются для аутентификации. Распечатав
total_entries
ответа API json можно получить количество всех успешно выполненных задач.
# импортировать библиотеку запросов
импортировать запросы
import os# указать местоположение вашего экземпляра воздушного потока
ENDPOINT_URL = "http://localhost:8080/"# в этом примере переменные env использовались для хранения информации для входа
# вам нужно будет указать свои учетные данные
user_name = os.environ['USERNAME_AIRFLOW_INSTANCE']
password = os.environ['PASSWORD_AIRFLOW_INSTANCE']# запросить у API успешные экземпляры задач из всех дагов и всех запусков дагов (~)
req = request.get(
f"{ENDPOINT_URL}/api/v1/dags/~/dagRuns/~/taskInstances?state= success",
auth=(user_name, password))# из ответа API вывести значение "общего количества записей"
print(req.json()['total_entries'])
Также возможно перейдите к Просмотрите -> Экземпляры задач в пользовательском интерфейсе Airflow и отфильтруйте экземпляры задач для всех с состоянием успех
.
Record Count
будет отображаться в правой части экрана.
Приостановка и возобновление работы группы обеспечения доступности баз данных
Приостановка и возобновление работы группы обеспечения доступности баз данных является обычным действием при запуске Airflow, хотя вы можете добиться этого, вручную переключая группы обеспечения доступности баз данных в пользовательском интерфейсе Airflow, в зависимости от вашего варианта использования и количества требуемых групп обеспечения доступности баз данных. переключать это может быть утомительно. REST API Airflow предлагает простой способ приостановить и возобновить работу DAG, отправив запрос PATCH.
Приведенный ниже сценарий Python отправляет запрос PATCH в API Airflow, чтобы обновить запись для DAG с определенным идентификатором (здесь example_dag_basic
), который приостановлен ( update_mask=is_paused
) с помощью json, который установит для свойства is_paused
значение True
, поэтому приостанавливает DAG.
# импортировать библиотеку запросов
импортировать запросы
import os# указать местоположение вашего экземпляра воздушного потока
ENDPOINT_URL = "http://localhost:8080/"# в этом примере переменные env использовались для хранения информации для входа
# вам нужно будет предоставить свои учетные данные
user_name = os.environ['USERNAME_AIRFLOW_INSTANCE']
password = os.environ['PASSWORD_AIRFLOW_INSTANCE']# данные для обновления, для возобновления паузы просто установите значение False
update= {"is_paused": True}
# укажите даг для приостановки/возобновления паузы
dag_id = example_dag_basic# запросите у API исправление всех задач как приостановленных
req = request.patch(
f"{ENDPOINT_URL}/api/v1/dags/{dag_id}?update_mask=is_paused" , json=update,
auth=(user_name, password))# распечатать ответ API
print(req.text)
Удалить группу обеспечения доступности баз данных
Удалить метаданные группы обеспечения доступности баз данных можно либо щелкнув значок корзины
в пользовательском интерфейсе Airflow, либо отправив DELETE
запрос с помощью REST API Airflow. Это невозможно, пока DAG все еще работает, и не удалит файл Python, в котором определена DAG, что означает, что DAG снова появится в вашем пользовательском интерфейсе без истории при следующем анализе
/dags
из планировщика.
Приведенный ниже скрипт Python отправляет запрос DELETE в группу обеспечения доступности баз данных с определенным идентификатором (здесь: dag_to_delete
).
# импортировать библиотеку запросов
импортировать запросы
import os# указать местоположение вашего экземпляра воздушного потока
ENDPOINT_URL = "http://localhost:8080/"# в этом примере переменные env использовались для хранения информации для входа
# вам нужно будет указать свои учетные данные
user_name = os.environ['USERNAME_AIRFLOW_INSTANCE']
password = os.environ['PASSWORD_AIRFLOW_INSTANCE']# указать, какой даг удалить
dag_id = 'dag_to_delete'# отправить запрос на удаление dags/{dag_id}",
auth=(user_name, password))# распечатать ответ API
print(req.text)
Получить все зависимости DAG поднимите оркестровку данных на новый уровень. Извлечение данных о зависимостях между несколькими группами доступности баз данных из базы данных метаданных может быть полезно для программной реализации пользовательских решений, например, чтобы убедиться, что подчиненные группы обеспечения доступности баз данных приостанавливаются, если приостанавливается восходящая группа обеспечения доступности баз данных. Эти зависимости можно визуализировать в пользовательском интерфейсе Airflow под
Просмотрите -> Зависимости DAG , но они недоступны через REST API Airflow.Чтобы программно получить доступ к этой информации, вы можете использовать SQLAlchemy с моделями Airflow для доступа к данным из базы данных метаданных. Обратите внимание, что если вы используете Airflow в настройках Dockerized, вам необходимо запустить приведенный ниже сценарий из контейнера планировщика.
из sqlalchemy import create_engine
из sqlalchemy.orm import Session
из airflow.models.serialized_dag import SerializedDagModel
import os# извлечение соединения SQL Alchemy
# если вы используете Astro CLI, эта переменная env будет настроена автоматическиengine = create_engine(conn_url)
с Session(engine) в качестве сеанса:
result = session.query(SerializedDagModel).first()
print(result.get_dag_dependencies())
Получить версию перегонного куба
В очень редких случаях вам может понадобиться значение из базы данных метаданных, которое недоступно ни одним из рассмотренных вами методов. В этом случае вы можете запросить базу данных метаданных напрямую. Прежде чем вы это сделаете, помните, что вы можете повредить свой экземпляр Airflow, напрямую манипулируя базой данных метаданных, особенно если схема меняется между обновлениями.
Приведенный ниже запрос извлекает идентификатор текущей версии перегонного куба, который недоступен ни одним из рекомендуемых способов взаимодействия с базой данных метаданных.