def get(self, key): value = self._cache.get(key, NO_VALUE) if value == NO_VALUE: value = super().get(sha1_mangle_key(key.encode())) if value != NO_VALUE and self._use_memory_cache: self._cache[key] = value return value
def get(self, key: str) -> SerializedReturnType: value = self._memory.get(key) if value == NO_VALUE: val = self._redis.get_serialized(sha1_mangle_key(key.encode())) if val in (None, NO_VALUE): return NO_VALUE value = self._redis.deserializer(val) if value != NO_VALUE and self._use_memory_cache: self._memory.set(key, value) return value
def _sha1_mangle_key(key): """Wrapper for dogpile's sha1_mangle_key. dogpile's sha1_mangle_key function expects an encoded string, so we should take steps to properly handle multiple inputs before passing the key through. """ try: key = key.encode('utf-8', errors='xmlcharrefreplace') except (UnicodeError, AttributeError): # NOTE(stevemar): if encoding fails just continue anyway. pass return util.sha1_mangle_key(key)
def sha1_mangle_key(key): """Wrapper for dogpile's sha1_mangle_key. Taken from oslo_cache.core._sha1_mangle_key dogpile's sha1_mangle_key function expects an encoded string, so we should take steps to properly handle multiple inputs before passing the key through. """ try: key = key.encode("utf-8", errors="xmlcharrefreplace") except (UnicodeError, AttributeError): # nosec # NOTE(stevemar): if encoding fails just continue anyway. pass return dogpile_util.sha1_mangle_key(key)
def _sha1_mangle_key(key): """Wrapper for dogpile's sha1_mangle_key. dogpile's sha1_mangle_key function expects an encoded string, so we should take steps to properly handle multiple inputs before passing the key through. NOTE(dstanek): this was copied directly from olso_cache """ try: key = key.encode("utf-8", errors="xmlcharrefreplace") except (UnicodeError, AttributeError): # NOTE(stevemar): if encoding fails just continue anyway. pass return util.sha1_mangle_key(key)
def test_sha1_key_mangler(self): decorate, canary = self._keygen_decorator() @decorate def one(a, b): pass gen = canary[0] key = gen(1, 2) eq_( util.sha1_mangle_key(key), "aead490a8ace2d69a00160f1fd8fd8a16552c24f", )
def universal_key_mangler(key): return sha1_mangle_key(flatten(key).encode())
def set(self, key: str, value: SerializedReturnType) -> None: if self._use_memory_cache: self._memory.set(key, value) self._redis.set_serialized(sha1_mangle_key(key.encode()), self._redis.serializer(value))
def test_sha1_key_mangler_bytes_py3k(self): eq_( util.sha1_mangle_key(b"some_key"), "53def077a4264bd3183d4eb21b1f56f883e1b572", )
def test_sha1_key_mangler_unicode_py2k(self): eq_( util.sha1_mangle_key("some_key"), "53def077a4264bd3183d4eb21b1f56f883e1b572", )
def set(self, key, value): if self._use_memory_cache: self._cache[key] = value super().set(sha1_mangle_key(key.encode()), value)