def METHOD_NAME(self, probe, status, message, exc_info=None):
    # type: (Probe, str, str, Optional[ExcInfoType]) -> None
    if self._retry_queue:
        meter.distribution("backlog.size", len(self._retry_queue))
    try:
        now = time.time()
        while self._retry_queue:
            item, ts = self._retry_queue.popleft()
            if now - ts > di_config.diagnostics_interval:
                # We discard the expired items as they wouldn't be picked
                # up by the backend anyway.
                continue
            try:
                self._encoder.put(item)
            except BufferFull:
                self._retry_queue.appendleft((item, ts))
                log.warning("Failed to clear probe status message backlog. Will try again later.")
                meter.increment("backlog.buffer_full")
                return
        payload = self._payload(probe, status, message, now, exc_info)
        try:
            self._encoder.put(payload)
        except BufferFull:
            log.warning("Failed to write status message to the buffer because it is full. Enqueuing for later.")
            meter.increment("buffer_full")
            self._retry_queue.append((payload, now))
    except Exception:
        log.error("Failed to write probe status payload", exc_info=True)