diff --git a/src/backend/base/langflow/services/settings/base.py b/src/backend/base/langflow/services/settings/base.py index 3d2cc6a77..073f12c67 100644 --- a/src/backend/base/langflow/services/settings/base.py +++ b/src/backend/base/langflow/services/settings/base.py @@ -171,6 +171,8 @@ class Settings(BaseSettings): """The maximum number of retries for the health check.""" max_file_size_upload: int = 100 """The maximum file size for the upload in MB.""" + deactivate_tracing: bool = False + """If set to True, tracing will be deactivated.""" @field_validator("dev") @classmethod diff --git a/src/backend/base/langflow/services/tracing/service.py b/src/backend/base/langflow/services/tracing/service.py index 21c8fb9fe..6d95c1a6b 100644 --- a/src/backend/base/langflow/services/tracing/service.py +++ b/src/backend/base/langflow/services/tracing/service.py @@ -58,6 +58,7 @@ class TracingService(Service): self.running = False self.worker_task: asyncio.Task | None = None self.end_trace_tasks: set[asyncio.Task] = set() + self.deactivated = self.settings_service.settings.deactivate_tracing async def log_worker(self) -> None: while self.running or not self.logs_queue.empty(): @@ -70,7 +71,7 @@ class TracingService(Service): self.logs_queue.task_done() async def start(self) -> None: - if self.running: + if self.running or self.deactivated: return try: self.running = True @@ -208,6 +209,9 @@ class TracingService(Service): inputs: dict[str, Any], metadata: dict[str, Any] | None = None, ): + if self.deactivated: + yield self + return trace_id = trace_name if component._vertex: trace_id = component._vertex.id @@ -251,6 +255,8 @@ class TracingService(Service): return inputs def get_langchain_callbacks(self) -> list[BaseCallbackHandler]: + if self.deactivated: + return [] callbacks = [] for tracer in self._tracers.values(): if not tracer.ready: # type: ignore[truthy-function] diff --git a/src/backend/tests/conftest.py b/src/backend/tests/conftest.py index 30317c1c3..b236a733f 100644 --- a/src/backend/tests/conftest.py +++ b/src/backend/tests/conftest.py @@ -277,6 +277,13 @@ def json_memory_chatbot_no_llm(): return pytest.MEMORY_CHATBOT_NO_LLM.read_text(encoding="utf-8") +@pytest.fixture(autouse=True) +def deactivate_tracing(monkeypatch): + monkeypatch.setenv("LANGFLOW_DEACTIVATE_TRACING", "true") + yield + monkeypatch.undo() + + @pytest.fixture(name="client") async def client_fixture( session: Session, # noqa: ARG001