code: def _throttle_error(self, msg, *args, **kwargs):
          
          now = time.time()
          if msg in self._errors:
              if ((now - self._errors[msg]) >=
                      self.server_error_interval):
                  fn = self.log.error
                  self._errors[msg] = now
              else:
                  fn = self.log.debug
          else:
              self._errors[msg] = now
              fn = self.log.error
  
          return fn(msg, *args, **kwargs)
docs: Avoids sending errors repeatedly. Waits at least
          `self.server_error_interval` seconds before sending the same error
          string to the error logging facility. If not enough time has passed,
          it calls `log.debug` instead
  
          Receives the same parameters as `Logger.error` an passes them on to the
          selected logging function, but ignores all parameters but the main
          message string when checking the last emission time.
  
          :returns: the return value of `Logger.debug` or `Logger.error`