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

OpenTelemetry Python运行报PushController模块不存在错误

报错根因

这是OpenTelemetry Python SDK跨版本API不兼容导致的:

  • 你参考的教程基于1.10及更早的Metrics预览版本编写,旧版本中定期推送指标的逻辑封装在opentelemetry.sdk.metrics.export.controller模块的PushController类下。
  • 从1.11版本开始,官方完成Metrics API稳定化重构,直接删除了旧的PushController实现,改用PeriodicExportingMetricReader承担定期导出指标的能力,模块路径也同步调整,旧的导入路径自然无法找到对应模块。
  • 你当前安装的1.12.0rc1属于重构后的新版本,和旧教程的示例代码完全不匹配。
修复步骤

直接把旧版PushController的逻辑替换为新版API实现即可:

  1. 删除代码中旧的导入行:
    from opentelemetry.sdk.metrics.export.controller import PushController
    
  2. 添加新版API需要的导入:
    from opentelemetry.sdk.metrics import MeterProvider
    from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
    from opentelemetry import metrics
    
  3. 替换原PushController初始化逻辑。如果你的旧代码类似下面的写法:
    # 旧版废弃写法,直接删除
    meter = metrics.get_meter(__name__)
    controller = PushController(
        meter=meter,
        exporter=your_configured_exporter,
        interval=5
    )
    
    替换为新版的初始化逻辑:
    # 新版稳定API写法
    reader = PeriodicExportingMetricReader(
        exporter=your_configured_exporter,
        export_interval_millis=5000 # 对应原interval参数的5秒间隔,单位为毫秒
    )
    provider = MeterProvider(metric_readers=[reader])
    metrics.set_meter_provider(provider)
    meter = metrics.get_meter(__name__)
    

补充说明:你当前安装的OTLP、Jaeger、Prometheus等官方exporter均为1.12.0rc1版本,已经适配新的Metrics API,不需要调整exporter本身的初始化代码,仅替换控制器相关逻辑即可。如果后续遇到预览版的未修复bug,可以把所有opentelemetry相关包切换到1.11.1正式版,稳定性更有保障。

内容的提问来源于stack exchange,提问作者Ibrahim Salim Omari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:06:13