def key_prefix_cache( cache: RedisCache, settings: SettingsWrapper ) -> Iterable[RedisCache]: caches_setting = copy.deepcopy(settings.CACHES) caches_setting["default"]["KEY_PREFIX"] = "*" settings.CACHES = caches_setting yield cache
def test_get_django_omit_exceptions_priority_1(settings: SettingsWrapper): caches_setting = copy.deepcopy(settings.CACHES) caches_setting["doesnotexist"]["OPTIONS"]["IGNORE_EXCEPTIONS"] = True settings.CACHES = caches_setting settings.DJANGO_REDIS_IGNORE_EXCEPTIONS = False cache = cast(RedisCache, caches["doesnotexist"]) assert cache._ignore_exceptions is True assert cache.get("key") is None
def test_get_django_omit_exceptions_priority_2(settings: SettingsWrapper): caches_setting = copy.deepcopy(settings.CACHES) caches_setting["doesnotexist"]["OPTIONS"]["IGNORE_EXCEPTIONS"] = False settings.CACHES = caches_setting settings.DJANGO_REDIS_IGNORE_EXCEPTIONS = True cache = cast(RedisCache, caches["doesnotexist"]) assert cache._ignore_exceptions is False with pytest.raises(ConnectionError): cache.get("key")
def test_custom_key_function(cache: RedisCache, settings: SettingsWrapper): caches_setting = copy.deepcopy(settings.CACHES) caches_setting["default"]["KEY_FUNCTION"] = "test_cache_options.make_key" caches_setting["default"]["REVERSE_KEY_FUNCTION"] = "test_cache_options.reverse_key" settings.CACHES = caches_setting if isinstance(cache.client, ShardClient): pytest.skip("ShardClient doesn't support get_client") for key in ["foo-aa", "foo-ab", "foo-bb", "foo-bc"]: cache.set(key, "foo") res = cache.delete_pattern("*foo-a*") assert bool(res) is True keys = cache.keys("foo*") assert set(keys) == {"foo-bb", "foo-bc"} # ensure our custom function was actually called assert {k.decode() for k in cache.client.get_client(write=False).keys("*")} == ( {"#1#foo-bc", "#1#foo-bb"} )
def ignore_exceptions_cache(settings: SettingsWrapper) -> RedisCache: caches_setting = copy.deepcopy(settings.CACHES) caches_setting["doesnotexist"]["OPTIONS"]["IGNORE_EXCEPTIONS"] = True settings.CACHES = caches_setting settings.DJANGO_REDIS_IGNORE_EXCEPTIONS = True return cast(RedisCache, caches["doesnotexist"])