mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-03-20 03:57:30 +08:00
feat(cache): 引入 fresh 和 async_fresh 以控制缓存行为
- 新增 `fresh` 和 `async_fresh` 用于在同步和异步函数中 临时禁用缓存。 - 通过 `_fresh` 这一 contextvars 变量实现上下文感知的 缓存刷新机制 - 修改了 `cached` 装饰器逻辑,在 `is_fresh()` 为 True 时跳过缓存读取。 - 修复 download 模块中路径处理问题,使用 `Path.as_posix()` 确保跨平台兼容性。
This commit is contained in:
@@ -18,14 +18,13 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
class TMDb(object):
|
||||
|
||||
def __init__(self, obj_cached=True, session=None, language=None):
|
||||
def __init__(self, session=None, language=None):
|
||||
self._api_key = settings.TMDB_API_KEY
|
||||
self._language = language or settings.TMDB_LOCALE or "en-US"
|
||||
self._session_id = None
|
||||
self._session = session
|
||||
self._wait_on_rate_limit = True
|
||||
self._debug_enabled = False
|
||||
self._cache_enabled = obj_cached
|
||||
self._proxies = settings.PROXY
|
||||
self._domain = settings.TMDB_API_DOMAIN
|
||||
self._page = None
|
||||
@@ -41,7 +40,6 @@ class TMDb(object):
|
||||
self._remaining = 40
|
||||
self._reset = None
|
||||
self._timeout = 15
|
||||
self.obj_cached = obj_cached
|
||||
|
||||
self.__clear_async_cache__ = False
|
||||
|
||||
@@ -119,14 +117,6 @@ class TMDb(object):
|
||||
def debug(self, debug):
|
||||
self._debug_enabled = bool(debug)
|
||||
|
||||
@property
|
||||
def cache(self):
|
||||
return self._cache_enabled
|
||||
|
||||
@cache.setter
|
||||
def cache(self, cache):
|
||||
self._cache_enabled = bool(cache)
|
||||
|
||||
@cached(maxsize=settings.CONF.tmdb, ttl=settings.CONF.meta, skip_none=True)
|
||||
def cached_request(self, method, url, data, json,
|
||||
_ts=datetime.strftime(datetime.now(), '%Y%m%d')):
|
||||
@@ -224,8 +214,9 @@ class TMDb(object):
|
||||
self._validate_api_key()
|
||||
url = self._build_url(action, params)
|
||||
|
||||
if self.cache and self.obj_cached and call_cached and method != "POST":
|
||||
req = self.cached_request(method, url, data, json)
|
||||
if call_cached and method != "POST":
|
||||
req = self.cached_request(method, url, data, json,
|
||||
_ts=datetime.strftime(datetime.now(), '%Y%m%d'))
|
||||
else:
|
||||
req = self.request(method, url, data, json)
|
||||
|
||||
@@ -253,8 +244,9 @@ class TMDb(object):
|
||||
self._validate_api_key()
|
||||
url = self._build_url(action, params)
|
||||
|
||||
if self.cache and self.obj_cached and call_cached and method != "POST":
|
||||
req = await self.async_cached_request(method, url, data, json)
|
||||
if call_cached and method != "POST":
|
||||
req = await self.async_cached_request(method, url, data, json,
|
||||
_ts=datetime.strftime(datetime.now(), '%Y%m%d'))
|
||||
else:
|
||||
req = await self.async_request(method, url, data, json)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user