code: def target(self, request, key, limit, ttl):
          
          ret = True
          if key:
              #backend = self.create_backend()
              #method = getattr(backend, "normalize_limit", None)
              #if method:
              #    limit = method(request, limit)
              #method = getattr(backend, "normalize_ttl", None)
              #if method:
              #    ttl = method(request, ttl)
              #ret = backend.target(request, key, limit, ttl)
              ret = super(RateLimitDecorator, self).target(request, key, limit, ttl)
          else:
              logger.warn("No ratelimit key found for {}".format(request.path))
  
          return ret
docs: this will only run the request if the key has a value, if you want to
          fail if the key doesn't have a value, then normalize_key() should raise
          an exception
  
          :param request: Request, the request instance
          :param key: string, the unique key for the endpoint, this is generated using
              self.normalize_key, so override that method to customize the key
          :param limit: int, max requests that should be received in ttl
          :param ttl: int, how many seconds the request should be throttled (eg, 3600 = 1 hour)