You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MLFlow前端操作日志:如何获取user_id或user_name

在MLFlow的_delete_experiment函数中获取操作执行者user_id的方法

因内部软件政策合规要求,需记录前端(UI)操作对应的user_name或user_id。在以下_delete_experiment函数中,希望在日志里记录操作的experiment_id及执行者user_id,但不清楚如何获取user_id:

@catch_mlflow_exception
@_disable_if_artifacts_only
def _delete_experiment():
    request_message = _get_request_message(
        DeleteExperiment(), schema={"experiment_id": [_assert_required, _assert_string]}
    )
    experiment_id=request_message.experiment_id

    experiment_name=request_message.experiment_name
    # print(experiment_id)
    # Log the experiment_id and username
    logging.info(f"Deleting experiment with ID: {experiment_id} by user: {user_id}")

    _get_tracking_store().delete_experiment(request_message.experiment_id)
    response_message = DeleteExperiment.Response()
    response = Response(mimetype="application/json")
    response.set_data(message_to_json(response_message))
    return response

可行的获取方式:

  • 从Flask请求上下文获取认证用户
    MLFlow服务端基于Flask搭建,若已启用认证(如HTTP Basic、OAuth、LDAP等),请求上下文会携带已认证的用户信息,可直接通过request对象获取:
from flask import request

# 在函数内添加
user_id = request.remote_user  # 适用于多数标准认证场景
# 若使用自定义认证头,可从headers提取
# user_id = request.headers.get("X-User-ID")
  • 从MLFlow内部请求上下文提取
    MLFlow的请求处理有内部上下文对象,可查看同项目下其他handler函数的实现(如_create_experiment),参考它们获取用户信息的方式,示例:
from mlflow.server.handlers import _get_request_context

request_context = _get_request_context()
user_id = request_context.user_id  # 需根据实际上下文属性调整字段名
  • 要求前端传递user_id(需配合修改)
    如果前端在发起请求时已持有用户信息,可修改请求schema,让前端传递user_id字段:
request_message = _get_request_message(
    DeleteExperiment(), 
    schema={
        "experiment_id": [_assert_required, _assert_string],
        "user_id": [_assert_required, _assert_string]  # 添加user_id字段校验
    }
)
user_id = request_message.user_id

建议

优先参考MLFlow现有handler的实现逻辑,从请求上下文或内部上下文获取用户信息,这是最符合框架规范的方式;若为自定义认证体系,则对应从请求头或认证数据中提取。

内容的提问来源于stack exchange,提问作者fabio.geraci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 18:04:52