style: 统一代码风格并采用现代化类型注解
对整个代码库进行了一次全面的代码风格清理和现代化改造,主要包括: - 移除了所有文件中多余的行尾空格。 - 将类型提示更新为 PEP 585 和 PEP 604 引入的现代语法(例如,使用 `list` 代替 `List`,使用 `|` 代替 `Optional`)。 - 清理了多个模块中未被使用的导入语句。 - 移除了不含插值变量的冗余 f-string。 - 调整了部分 `__init__.py` 文件中的 `__all__` 导出顺序,以保持一致性。 这些改动旨在提升代码的可读性和可维护性,使其与现代 Python 最佳实践保持一致,但未修改任何核心逻辑。
This commit is contained in:
@@ -9,11 +9,12 @@
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import builtins
|
||||
import time
|
||||
from collections import OrderedDict
|
||||
from collections.abc import Callable
|
||||
from dataclasses import dataclass
|
||||
from typing import Any, Dict, Generic, List, Optional, Set, TypeVar, Union
|
||||
from typing import Any, Generic, TypeVar
|
||||
|
||||
from src.common.logger import get_logger
|
||||
from src.common.memory_utils import estimate_size_smart
|
||||
@@ -96,7 +97,7 @@ class LRUCache(Generic[T]):
|
||||
self._lock = asyncio.Lock()
|
||||
self._stats = CacheStats()
|
||||
|
||||
async def get(self, key: str) -> Optional[T]:
|
||||
async def get(self, key: str) -> T | None:
|
||||
"""获取缓存值
|
||||
|
||||
Args:
|
||||
@@ -137,8 +138,8 @@ class LRUCache(Generic[T]):
|
||||
self,
|
||||
key: str,
|
||||
value: T,
|
||||
size: Optional[int] = None,
|
||||
ttl: Optional[float] = None,
|
||||
size: int | None = None,
|
||||
ttl: float | None = None,
|
||||
) -> None:
|
||||
"""设置缓存值
|
||||
|
||||
@@ -287,8 +288,8 @@ class MultiLevelCache:
|
||||
async def get(
|
||||
self,
|
||||
key: str,
|
||||
loader: Optional[Callable[[], Any]] = None,
|
||||
) -> Optional[Any]:
|
||||
loader: Callable[[], Any] | None = None,
|
||||
) -> Any | None:
|
||||
"""从缓存获取数据
|
||||
|
||||
查询顺序:L1 -> L2 -> loader
|
||||
@@ -329,8 +330,8 @@ class MultiLevelCache:
|
||||
self,
|
||||
key: str,
|
||||
value: Any,
|
||||
size: Optional[int] = None,
|
||||
ttl: Optional[float] = None,
|
||||
size: int | None = None,
|
||||
ttl: float | None = None,
|
||||
) -> None:
|
||||
"""设置缓存值
|
||||
|
||||
@@ -390,7 +391,7 @@ class MultiLevelCache:
|
||||
await self.l2_cache.clear()
|
||||
logger.info("所有缓存已清空")
|
||||
|
||||
async def get_stats(self) -> Dict[str, Any]:
|
||||
async def get_stats(self) -> dict[str, Any]:
|
||||
"""获取所有缓存层的统计信息(修复版:避免锁嵌套,使用超时)"""
|
||||
# 🔧 修复:并行获取统计信息,避免锁嵌套
|
||||
l1_stats_task = asyncio.create_task(self._get_cache_stats_safe(self.l1_cache, "L1"))
|
||||
@@ -492,7 +493,7 @@ class MultiLevelCache:
|
||||
logger.error(f"{cache_name}统计获取异常: {e}")
|
||||
return CacheStats()
|
||||
|
||||
async def _get_cache_keys_safe(self, cache) -> Set[str]:
|
||||
async def _get_cache_keys_safe(self, cache) -> builtins.set[str]:
|
||||
"""安全获取缓存键集合(带超时)"""
|
||||
try:
|
||||
# 快速获取键集合,使用超时避免死锁
|
||||
@@ -507,12 +508,12 @@ class MultiLevelCache:
|
||||
logger.error(f"缓存键获取异常: {e}")
|
||||
return set()
|
||||
|
||||
async def _extract_keys_with_lock(self, cache) -> Set[str]:
|
||||
async def _extract_keys_with_lock(self, cache) -> builtins.set[str]:
|
||||
"""在锁保护下提取键集合"""
|
||||
async with cache._lock:
|
||||
return set(cache._cache.keys())
|
||||
|
||||
async def _calculate_memory_usage_safe(self, cache, keys: Set[str]) -> int:
|
||||
async def _calculate_memory_usage_safe(self, cache, keys: builtins.set[str]) -> int:
|
||||
"""安全计算内存使用(带超时)"""
|
||||
if not keys:
|
||||
return 0
|
||||
@@ -529,7 +530,7 @@ class MultiLevelCache:
|
||||
logger.error(f"内存计算异常: {e}")
|
||||
return 0
|
||||
|
||||
async def _calc_memory_with_lock(self, cache, keys: Set[str]) -> int:
|
||||
async def _calc_memory_with_lock(self, cache, keys: builtins.set[str]) -> int:
|
||||
"""在锁保护下计算内存使用"""
|
||||
total_size = 0
|
||||
async with cache._lock:
|
||||
@@ -749,7 +750,7 @@ class MultiLevelCache:
|
||||
|
||||
|
||||
# 全局缓存实例
|
||||
_global_cache: Optional[MultiLevelCache] = None
|
||||
_global_cache: MultiLevelCache | None = None
|
||||
_cache_lock = asyncio.Lock()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user