fix: clear_cache for shared cache
This commit is contained in:
parent
757f283eea
commit
850cc58664
3 changed files with 7 additions and 7 deletions
|
|
@ -23,14 +23,14 @@ from functools import wraps
|
|||
import frappe
|
||||
from frappe.exceptions import ServiceUnavailableError
|
||||
from frappe.utils import cint
|
||||
from frappe.utils.caching import site_cache
|
||||
from frappe.utils.caching import redis_cache
|
||||
from frappe.utils.redis_semaphore import RedisSemaphore
|
||||
|
||||
# Default wait timeout (seconds) before returning 503 to the caller.
|
||||
_DEFAULT_WAIT_TIMEOUT = 10
|
||||
|
||||
|
||||
@site_cache(ttl=3600)
|
||||
@redis_cache(shared=True)
|
||||
def _default_limit() -> int:
|
||||
"""Derive a sensible default concurrency limit from gunicorn's max concurrency."""
|
||||
return max(1, gunicorn_max_concurrency() // 2)
|
||||
|
|
|
|||
|
|
@ -180,7 +180,7 @@ def redis_cache(ttl: int | None = 3600, user: str | bool | None = None, shared:
|
|||
func_key = f"{func.__module__}.{func.__qualname__}"
|
||||
|
||||
def clear_cache():
|
||||
frappe.cache.delete_keys(func_key)
|
||||
frappe.cache.delete_keys(func_key, user=user, shared=shared)
|
||||
|
||||
func.clear_cache = clear_cache
|
||||
func.ttl = ttl if not callable(ttl) else 3600
|
||||
|
|
|
|||
|
|
@ -125,19 +125,19 @@ class RedisWrapper(redis.Redis):
|
|||
|
||||
return ret
|
||||
|
||||
def get_keys(self, key):
|
||||
def get_keys(self, key, user=None, shared=False):
|
||||
"""Return keys starting with `key`."""
|
||||
try:
|
||||
key = self.make_key(key + "*")
|
||||
key = self.make_key(key + "*", user=user, shared=shared)
|
||||
return self.keys(key)
|
||||
|
||||
except redis.exceptions.ConnectionError:
|
||||
regex = re.compile(cstr(key).replace("|", r"\|").replace("*", r"[\w]*"))
|
||||
return [k for k in list(frappe.local.cache) if regex.match(cstr(k))]
|
||||
|
||||
def delete_keys(self, key):
|
||||
def delete_keys(self, key, user=None, shared=False):
|
||||
"""Delete keys with wildcard `*`."""
|
||||
self.delete_value(self.get_keys(key), make_keys=False)
|
||||
self.delete_value(self.get_keys(key, user=user, shared=shared), make_keys=False)
|
||||
|
||||
def delete_key(self, *args, **kwargs):
|
||||
self.delete_value(*args, **kwargs)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue