diff --git a/zhenxun/builtin_plugins/plugin_store/config.py b/zhenxun/builtin_plugins/plugin_store/config.py index 94922b09..9c47d486 100644 --- a/zhenxun/builtin_plugins/plugin_store/config.py +++ b/zhenxun/builtin_plugins/plugin_store/config.py @@ -25,3 +25,6 @@ GIT_API_TREES_FORMAT = ( "https://api.github.com/repos/{owner}/{repo}/git/trees/{branch}?recursive=1" ) """git api trees地址格式""" + +CACHED_API_TTL = 300 +"""缓存api ttl""" diff --git a/zhenxun/builtin_plugins/plugin_store/models.py b/zhenxun/builtin_plugins/plugin_store/models.py index 6cd016ba..afdd26e4 100644 --- a/zhenxun/builtin_plugins/plugin_store/models.py +++ b/zhenxun/builtin_plugins/plugin_store/models.py @@ -9,6 +9,7 @@ from zhenxun.utils.enum import PluginType from zhenxun.utils.http_utils import AsyncHttpx from .config import ( + CACHED_API_TTL, GIT_API_TREES_FORMAT, JSD_PACKAGE_API_FORMAT, GITHUB_REPO_URL_PATTERN, @@ -94,6 +95,7 @@ class BaseInfo(BaseModel, ABC): @classmethod @abstractmethod + @cached(ttl=CACHED_API_TTL) async def parse_repo_info(cls, repo_info: RepoInfo) -> "BaseInfo": ... @abstractmethod @@ -160,6 +162,7 @@ class FileInfo(BaseInfo): return cur_file @classmethod + @cached(ttl=CACHED_API_TTL) async def parse_repo_info(cls, repo_info: RepoInfo) -> "FileInfo": """解析仓库信息""" @@ -224,6 +227,7 @@ class TreesInfo(BaseInfo): ] @classmethod + @cached(ttl=CACHED_API_TTL) async def parse_repo_info(cls, repo_info: RepoInfo) -> "TreesInfo": """获取仓库树