mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-08-25 02:00:13 +08:00
fix cache
This commit is contained in:
@@ -529,33 +529,65 @@ def cached(region: Optional[str] = None, maxsize: Optional[int] = 512, ttl: Opti
|
|||||||
# 获取缓存区
|
# 获取缓存区
|
||||||
cache_region = region if region is not None else f"{func.__module__}.{func.__name__}"
|
cache_region = region if region is not None else f"{func.__module__}.{func.__name__}"
|
||||||
|
|
||||||
@wraps(func)
|
# 检查是否为异步函数
|
||||||
def wrapper(*args, **kwargs):
|
is_async = inspect.iscoroutinefunction(func)
|
||||||
# 获取缓存键
|
|
||||||
cache_key = cache_backend.get_cache_key(func, args, kwargs)
|
if is_async:
|
||||||
# 尝试获取缓存
|
@wraps(func)
|
||||||
cached_value = cache_backend.get(cache_key, region=cache_region)
|
async def async_wrapper(*args, **kwargs):
|
||||||
if should_cache(cached_value) and is_valid_cache_value(cache_key, cached_value, cache_region):
|
# 获取缓存键
|
||||||
return cached_value
|
cache_key = cache_backend.get_cache_key(func, args, kwargs)
|
||||||
# 执行函数并缓存结果
|
# 尝试获取缓存
|
||||||
result = func(*args, **kwargs)
|
cached_value = cache_backend.get(cache_key, region=cache_region)
|
||||||
# 判断是否需要缓存
|
if should_cache(cached_value) and is_valid_cache_value(cache_key, cached_value, cache_region):
|
||||||
if not should_cache(result):
|
return cached_value
|
||||||
|
# 执行异步函数并缓存结果
|
||||||
|
result = await func(*args, **kwargs)
|
||||||
|
# 判断是否需要缓存
|
||||||
|
if not should_cache(result):
|
||||||
|
return result
|
||||||
|
# 设置缓存(如果有传入的 maxsize 和 ttl,则覆盖默认值)
|
||||||
|
cache_backend.set(cache_key, result, ttl=ttl, maxsize=maxsize, region=cache_region)
|
||||||
return result
|
return result
|
||||||
# 设置缓存(如果有传入的 maxsize 和 ttl,则覆盖默认值)
|
|
||||||
cache_backend.set(cache_key, result, ttl=ttl, maxsize=maxsize, region=cache_region)
|
|
||||||
return result
|
|
||||||
|
|
||||||
def cache_clear():
|
def cache_clear():
|
||||||
"""
|
"""
|
||||||
清理缓存区
|
清理缓存区
|
||||||
"""
|
"""
|
||||||
# 清理缓存区
|
# 清理缓存区
|
||||||
cache_backend.clear(region=cache_region)
|
cache_backend.clear(region=cache_region)
|
||||||
|
|
||||||
wrapper.cache_region = cache_region
|
async_wrapper.cache_region = cache_region
|
||||||
wrapper.cache_clear = cache_clear
|
async_wrapper.cache_clear = cache_clear
|
||||||
return wrapper
|
return async_wrapper
|
||||||
|
else:
|
||||||
|
@wraps(func)
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
# 获取缓存键
|
||||||
|
cache_key = cache_backend.get_cache_key(func, args, kwargs)
|
||||||
|
# 尝试获取缓存
|
||||||
|
cached_value = cache_backend.get(cache_key, region=cache_region)
|
||||||
|
if should_cache(cached_value) and is_valid_cache_value(cache_key, cached_value, cache_region):
|
||||||
|
return cached_value
|
||||||
|
# 执行函数并缓存结果
|
||||||
|
result = func(*args, **kwargs)
|
||||||
|
# 判断是否需要缓存
|
||||||
|
if not should_cache(result):
|
||||||
|
return result
|
||||||
|
# 设置缓存(如果有传入的 maxsize 和 ttl,则覆盖默认值)
|
||||||
|
cache_backend.set(cache_key, result, ttl=ttl, maxsize=maxsize, region=cache_region)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def cache_clear():
|
||||||
|
"""
|
||||||
|
清理缓存区
|
||||||
|
"""
|
||||||
|
# 清理缓存区
|
||||||
|
cache_backend.clear(region=cache_region)
|
||||||
|
|
||||||
|
wrapper.cache_region = cache_region
|
||||||
|
wrapper.cache_clear = cache_clear
|
||||||
|
return wrapper
|
||||||
|
|
||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user