def stop_evaluator(self) -> None:
        """Stop the evaluator for the app.

        This is only supported for OTEL Tracing.
        """
        if self._thread is None:
            logger.warning("No evaluator thread is running.")
            return
        # Signal the thread to stop.
        self._stop_event.set()
        # Give the thread a reasonable time to exit gracefully.
        self._thread.join(timeout=300)
        # If thread is still alive after timeout, log a warning.
        if self._thread.is_alive():
            logger.warning(
                f"Evaluator thread (app_name={self._app_name}, app_version={self._app_version}) did not terminate gracefully within timeout."
            )
        else:
            logger.info(
                f"Stopped evaluator thread (app_name={self._app_name}, app_version={self._app_version})."
            )
        # Reset for potential future restart.
        self._thread = None
        self._stop_event.clear()
Stop the evaluator for the app.

        This is only supported for OTEL Tracing.
        
src/core/trulens/core/utils/evaluator.py