code: def _check_no_progress(self, at_timestamp: float) -> None:
      if self._async_no_progress_callback is None:
          return
  
      if self._last_batch_started_at is not None:
          if (
              at_timestamp - self._last_batch_started_at
              > self._async_no_progress_threshold
          ):
              if (
                  self._last_no_progress_callback_at is None
                  or at_timestamp - self._last_no_progress_callback_at
                  > self._callbacks_interval
              ):
                  execute_callback(
                      callback=self._async_no_progress_callback,
                      container=self._container,
                      in_async=self._in_async,
                  )
                  self._last_no_progress_callback_at = monotonic()
  
file_path: neptune-client/src/neptune/internal/signals_processing/signals_processor.py
imports: from queue import Empty, Queue
  from threading import Thread
  from time import monotonic
  from typing import TYPE_CHECKING, Callable, Optional
  from neptune.internal.init.parameters import IN_BETWEEN_CALLBACKS_MINIMUM_INTERVAL
  from neptune.internal.signals_processing.signals import BatchLagSignal, SignalsVisitor
  from neptune.internal.threading.daemon import Daemon
label_desc: Use image node_id 6 for calling the SignalsProcessor obj's underlying member method code with example usage: obj._check_no_progress(at_timestamp) without return types