瀏覽代碼

refac: lazySpanExporter no longer needed

Timothy Jaeryang Baek 2 月之前
父節點
當前提交
aa83ebae58
共有 2 個文件被更改,包括 3 次插入33 次删除
  1. 0 31
      backend/open_webui/utils/telemetry/exporters.py
  2. 3 2
      backend/open_webui/utils/telemetry/setup.py

+ 0 - 31
backend/open_webui/utils/telemetry/exporters.py

@@ -1,31 +0,0 @@
-import threading
-
-from opentelemetry.sdk.trace import ReadableSpan
-from opentelemetry.sdk.trace.export import BatchSpanProcessor
-
-
-class LazyBatchSpanProcessor(BatchSpanProcessor):
-    def __init__(self, *args, **kwargs):
-        super().__init__(*args, **kwargs)
-        self.done = True
-        with self.condition:
-            self.condition.notify_all()
-        self.worker_thread.join()
-        self.done = False
-        self.worker_thread = None
-
-    def on_end(self, span: ReadableSpan) -> None:
-        if self.worker_thread is None:
-            self.worker_thread = threading.Thread(
-                name=self.__class__.__name__, target=self.worker, daemon=True
-            )
-            self.worker_thread.start()
-        super().on_end(span)
-
-    def shutdown(self) -> None:
-        self.done = True
-        with self.condition:
-            self.condition.notify_all()
-        if self.worker_thread:
-            self.worker_thread.join()
-        self.span_exporter.shutdown()

+ 3 - 2
backend/open_webui/utils/telemetry/setup.py

@@ -1,15 +1,16 @@
 from fastapi import FastAPI
 from opentelemetry import trace
+
 from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
 from opentelemetry.exporter.otlp.proto.http.trace_exporter import (
     OTLPSpanExporter as HttpOTLPSpanExporter,
 )
 from opentelemetry.sdk.resources import SERVICE_NAME, Resource
 from opentelemetry.sdk.trace import TracerProvider
+from opentelemetry.sdk.trace.export import BatchSpanProcessor
 from sqlalchemy import Engine
 from base64 import b64encode
 
-from open_webui.utils.telemetry.exporters import LazyBatchSpanProcessor
 from open_webui.utils.telemetry.instrumentors import Instrumentor
 from open_webui.utils.telemetry.metrics import setup_metrics
 from open_webui.env import (
@@ -50,7 +51,7 @@ def setup(app: FastAPI, db_engine: Engine):
             insecure=OTEL_EXPORTER_OTLP_INSECURE,
             headers=headers,
         )
-    trace.get_tracer_provider().add_span_processor(LazyBatchSpanProcessor(exporter))
+    trace.get_tracer_provider().add_span_processor(BatchSpanProcessor(exporter))
     Instrumentor(app=app, db_engine=db_engine).instrument()
 
     # set up metrics only if enabled