对于观察者而言,是否支持 PipelineWorker.remove_observer() 使其从自身的事件处理程序中脱离?
作者: mannyb223创建于 2026年9月16日更新于 2026年9月16日
我们正在尝试在一个持续数分钟的电话呼叫管道中减少 CPU 使用。`StartupTimingObserver` 在呼叫的第一秒钟左右进行了实际工作(其两个报告:`on_transport_timing_report` 和 `on_startup_timing_report`),然后什么都没有 — — 其余的呼叫中,每个帧都会通过其 `on_push_frame`,该函数在两次 `isinstance` 检查后返回。这本身就很小,但将每个帧传递给每个观察者队列的扩散行为并不是这样:在我们的配置中,四个附加观察者占每个呼叫的 CPU 资源的约 4% (整个观察者扩散约占进程 CPU 时间的五分之一),其中一个是这个在启动后没有做任何有用的工作的观察者。
内容来源: pipecat-ai/pipecat