def get_cache_key(self):
        if 'uri' in self.view_throttling:
            if not self.request.path.startswith(self.view_throttling['uri']):
                return None, None

        timeouts = (
            ('view_method', self.view_throttling.get(self.method)),
            ('view', self.view_throttling.get('all')),
            ('site_method', THROTTLING.get(self.method)),
            ('site', THROTTLING.get('all')),
        )

        format_args = {
            'prefix': THROTTLING_CACHE_PREFIX,
            'view': self.view_name,
            'uid': self.request.user.id,
            'ip': ip(self.request),
            'method': self.request.method
        }

        if hasattr(self.request, 'session') and self.request.session.session_key:
            format_args['session'] = self.request.session.session_key

        for pattern_key, timeout in timeouts:
            if timeout is not None:
                if isinstance(timeout, basestring) and timeout.startswith('callable:'):
                    callback_name = timeout.split('callable:')[1]
                    return get_callable(callback_name)(self.request, self.view_func, self.view_args, self.view_kwargs)

                return format_args % THROTTLING_CACHE_KEY_PATTERNS[pattern_key], timeout

        return None, None
dataset/ETHPy150Open night-crawler/django-throttling/django_throttling/util.py/Throttle.get_cache_key/swapped operands of `%`