Airflow 如何获取手动触发DAG的用户?

Airflow 如何获取手动触发DAG的用户?,airflow,airflow-scheduler,airflow-operator,apache-airflow-xcom,Airflow,Airflow Scheduler,Airflow Operator,Apache Airflow Xcom,在Airflow UI中,“Browser>Logs”下可用的日志事件之一是事件“Trigger”,以及负责触发此事件的DAG ID和所有者/用户。这些信息是否易于通过编程获得 用例是,我有一个DAG,它允许一部分用户手动触发执行。根据触发此DAG执行的用户,此DAG的代码执行行为将有所不同 提前谢谢。您可以直接从气流元数据数据库中的日志表中获取,如下所示: 来自afflow.models.log导入日志 从airflow.utils.db导入创建会话 使用create_session()作为会

在Airflow UI中,“Browser>Logs”下可用的日志事件之一是事件“Trigger”,以及负责触发此事件的DAG ID和所有者/用户。这些信息是否易于通过编程获得

用例是,我有一个DAG,它允许一部分用户手动触发执行。根据触发此DAG执行的用户,此DAG的代码执行行为将有所不同


提前谢谢。

您可以直接从气流元数据数据库中的
日志
表中获取,如下所示:

来自afflow.models.log导入日志
从airflow.utils.db导入创建会话
使用create_session()作为会话:
结果=session.query(Log.dttm、Log.dag\u id、Log.execution\u date、Log.owner、Log.extra)。过滤器(Log.dag\u id=='example\u trigger\u target\u dag',Log.event='trigger')。全部()
#获得前2项记录
结果[2]
输出

(datetime.datetime(2020,3,30,23,16,52,487095,tzinfo=),
“示例\u触发器\u目标\u dag”,
没有一个
“管理员”,
“[(\'dag\'id\',\'example\'U trigger\'U target\'U dag\'),('origin\',\'/tree?dag\'id=example\'U trigger\'U target\'U dag\',('csrf\'U token\','IJMYZQ4MGU2NGFJMZG2ZWI3ZJGYMMTA1MWM3NRYMZYMZYMOTHKOTFHMTYI.XoJ92A.5Q35CLFNQNQJJKRIWKWAAT8DNLVS-98\'),('conf\','conf\','conf','

我将稍微更正前面的答案:

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

谢谢你,卡克西。这就是我要找的。