Как получить Airflow пользователя, который вручную вызывает DAG? - PullRequest
1 голос
/ 02 мая 2020

В пользовательском интерфейсе Airflow одним из событий журнала, доступных в разделе «Браузер> Журналы», является событие «Триггер» вместе с идентификатором DAG и владельцем / пользователем, ответственным за запуск этого события. Легко ли получить эту информацию программным способом?

Вариант использования: у меня есть группа доступности базы данных, которая позволяет подмножеству пользователей вручную запускать выполнение. В зависимости от пользователя, который запускает выполнение этой DAG, поведение выполнения кода из этой DAG будет отличаться.

Заранее спасибо.

1 Ответ

3 голосов
/ 02 мая 2020

Вы можете напрямую извлечь его из таблицы Log в базе данных метаданных воздушного потока следующим образом:

from airflow.models.log import Log
from airflow.utils.db import create_session

with create_session() as session:
   results = session.query(Log.dttm, Log.dag_id, Log.execution_date, Log.owner, Log.extra).filter(Log.dag_id == 'example_trigger_target_dag', Log.event == 'trigger').all()

# Get top 2 records
results[2]

Вывод :

(datetime.datetime(2020, 3, 30, 23, 16, 52, 487095, tzinfo=<TimezoneInfo [UTC, GMT, +00:00:00, STD]>),
 'example_trigger_target_dag',
 None,
 'admin',
 '[(\'dag_id\', \'example_trigger_target_dag\'), (\'origin\', \'/tree?dag_id=example_trigger_target_dag\'), (\'csrf_token\', \'IjhmYzQ4MGU2NGFjMzg2ZWI3ZjgyMTA1MWM3N2RhYmZiOThkOTFhMTYi.XoJ92A.5q35ClFnQjKRiWwata8dNlVs-98\'), (\'conf\', \'{"message": "kaxil"}\')]')
...