从下面service设计感觉, trackingservice是单例的; 是的.
其中的self._tracers["langfuse"]也是单例的, 不是
async def initialize_tracers(self) -> None:
if self.deactivated:
return
try:
await self.start()
self._initialize_langsmith_tracer()
self._initialize_langwatch_tracer()
self._initialize_langfuse_tracer()
self._initialize_arize_phoenix_tracer()
见下 调试tracer的init/add_trace/end/trace
start()
: 启动一个协程 self.worker_task = asyncio.create_task(self.log_worker()) , 消费logs_queue执行log_func
initialize_tracers()
只在graph的initialize_run
里, 而它在3个地方被调用
build_graph_from_data
process