code: def reload(self):
          
  
          # Acquire the pending semaphore.  If we fail, exit--someone
          # else is already doing the reload
          if not self.pending.acquire(False):
              return
  
          # Do the remaining steps in a try/finally block so we make
          # sure to release the semaphore
          control_args = self.config['control']
          try:
              # Load all the limits
              key = control_args.get('limits_key', 'limits')
              self.limits.set_limits(self.db.zrange(key, 0, -1))
          except Exception:
              # Log an error
              LOG.exception("Could not load limits")
  
              # Get our error set and publish channel
              error_key = control_args.get('errors_key', 'errors')
              error_channel = control_args.get('errors_channel', 'errors')
  
              # Get an informative message
              msg = "Failed to load limits: " + traceback.format_exc()
  
              # Store the message into the error set.  We use a set here
              # because it's likely that more than one node will
              # generate the same message if there is an error, and this
              # avoids an explosion in the size of the set.
              with utils.ignore_except():
                  self.db.sadd(error_key, msg)
  
              # Publish the message to a channel
              with utils.ignore_except():
                  self.db.publish(error_channel, msg)
          finally:
              self.pending.release()
docs: Reloads the limits configuration from the database.
  
          If an error occurs loading the configuration, an error-level
          log message will be emitted.  Additionally, the error message
          will be added to the set specified by the 'redis.errors_key'
          configuration ('errors' by default) and sent to the publishing
          channel specified by the 'redis.errors_channel' configuration
          ('errors' by default).