style: 统一代码风格并进行现代化改进
对整个代码库进行了一次全面的风格统一和现代化改进。主要变更包括:
- 将 `hasattr` 等内置函数中的字符串参数从单引号 `'` 统一为双引号 `"`。
- 采用现代类型注解,例如将 `Optional[T]` 替换为 `T | None`,`List[T]` 替换为 `list[T]` 等。
- 移除不再需要的 Python 2 兼容性声明 `# -*- coding: utf-8 -*-`。
- 清理了多余的空行、注释和未使用的导入。
- 统一了文件末尾的换行符。
- 优化了部分日志输出和字符串格式化 (`f"{e!s}"`)。
这些改动旨在提升代码的可读性、一致性和可维护性,使其更符合现代 Python 编码规范。
This commit is contained in:
committed by
Windpicker-owo
parent
1fb2ab6450
commit
cd84373828
@@ -4,14 +4,13 @@
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import psutil
|
||||
import time
|
||||
from typing import Dict, List, Optional, Set, Tuple
|
||||
from dataclasses import dataclass, field
|
||||
from enum import Enum
|
||||
|
||||
import psutil
|
||||
|
||||
from src.common.logger import get_logger
|
||||
from src.chat.message_receive.chat_stream import ChatStream
|
||||
|
||||
logger = get_logger("adaptive_stream_manager")
|
||||
|
||||
@@ -71,16 +70,16 @@ class AdaptiveStreamManager:
|
||||
|
||||
# 当前状态
|
||||
self.current_limit = base_concurrent_limit
|
||||
self.active_streams: Set[str] = set()
|
||||
self.pending_streams: Set[str] = set()
|
||||
self.stream_metrics: Dict[str, StreamMetrics] = {}
|
||||
self.active_streams: set[str] = set()
|
||||
self.pending_streams: set[str] = set()
|
||||
self.stream_metrics: dict[str, StreamMetrics] = {}
|
||||
|
||||
# 异步信号量
|
||||
self.semaphore = asyncio.Semaphore(base_concurrent_limit)
|
||||
self.priority_semaphore = asyncio.Semaphore(5) # 高优先级专用信号量
|
||||
|
||||
# 系统监控
|
||||
self.system_metrics: List[SystemMetrics] = []
|
||||
self.system_metrics: list[SystemMetrics] = []
|
||||
self.last_adjustment_time = 0.0
|
||||
|
||||
# 统计信息
|
||||
@@ -95,8 +94,8 @@ class AdaptiveStreamManager:
|
||||
}
|
||||
|
||||
# 监控任务
|
||||
self.monitor_task: Optional[asyncio.Task] = None
|
||||
self.adjustment_task: Optional[asyncio.Task] = None
|
||||
self.monitor_task: asyncio.Task | None = None
|
||||
self.adjustment_task: asyncio.Task | None = None
|
||||
self.is_running = False
|
||||
|
||||
logger.info(f"自适应流管理器初始化完成 (base_limit={base_concurrent_limit}, max_limit={max_concurrent_limit})")
|
||||
@@ -443,7 +442,7 @@ class AdaptiveStreamManager:
|
||||
if hasattr(metrics, key):
|
||||
setattr(metrics, key, value)
|
||||
|
||||
def get_stats(self) -> Dict:
|
||||
def get_stats(self) -> dict:
|
||||
"""获取统计信息"""
|
||||
stats = self.stats.copy()
|
||||
stats.update({
|
||||
@@ -465,7 +464,7 @@ class AdaptiveStreamManager:
|
||||
|
||||
|
||||
# 全局自适应管理器实例
|
||||
_adaptive_manager: Optional[AdaptiveStreamManager] = None
|
||||
_adaptive_manager: AdaptiveStreamManager | None = None
|
||||
|
||||
|
||||
def get_adaptive_stream_manager() -> AdaptiveStreamManager:
|
||||
@@ -485,4 +484,4 @@ async def init_adaptive_stream_manager():
|
||||
async def shutdown_adaptive_stream_manager():
|
||||
"""关闭自适应流管理器"""
|
||||
manager = get_adaptive_stream_manager()
|
||||
await manager.stop()
|
||||
await manager.stop()
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
|
||||
import asyncio
|
||||
import time
|
||||
from typing import Any, Dict, List, Optional
|
||||
from dataclasses import dataclass, field
|
||||
from collections import defaultdict
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Any
|
||||
|
||||
from src.common.database.sqlalchemy_database_api import get_db_session
|
||||
from src.common.database.sqlalchemy_models import ChatStreams
|
||||
@@ -21,7 +21,7 @@ logger = get_logger("batch_database_writer")
|
||||
class StreamUpdatePayload:
|
||||
"""流更新数据结构"""
|
||||
stream_id: str
|
||||
update_data: Dict[str, Any]
|
||||
update_data: dict[str, Any]
|
||||
priority: int = 0 # 优先级,数字越大优先级越高
|
||||
timestamp: float = field(default_factory=time.time)
|
||||
|
||||
@@ -47,7 +47,7 @@ class BatchDatabaseWriter:
|
||||
|
||||
# 运行状态
|
||||
self.is_running = False
|
||||
self.writer_task: Optional[asyncio.Task] = None
|
||||
self.writer_task: asyncio.Task | None = None
|
||||
|
||||
# 统计信息
|
||||
self.stats = {
|
||||
@@ -60,7 +60,7 @@ class BatchDatabaseWriter:
|
||||
}
|
||||
|
||||
# 按优先级分类的批次
|
||||
self.priority_batches: Dict[int, List[StreamUpdatePayload]] = defaultdict(list)
|
||||
self.priority_batches: dict[int, list[StreamUpdatePayload]] = defaultdict(list)
|
||||
|
||||
logger.info(f"批量数据库写入器初始化完成 (batch_size={batch_size}, interval={flush_interval}s)")
|
||||
|
||||
@@ -98,7 +98,7 @@ class BatchDatabaseWriter:
|
||||
async def schedule_stream_update(
|
||||
self,
|
||||
stream_id: str,
|
||||
update_data: Dict[str, Any],
|
||||
update_data: dict[str, Any],
|
||||
priority: int = 0
|
||||
) -> bool:
|
||||
"""
|
||||
@@ -166,7 +166,7 @@ class BatchDatabaseWriter:
|
||||
await self._flush_all_batches()
|
||||
logger.info("批量写入循环结束")
|
||||
|
||||
async def _collect_batch(self) -> List[StreamUpdatePayload]:
|
||||
async def _collect_batch(self) -> list[StreamUpdatePayload]:
|
||||
"""收集一个批次的数据"""
|
||||
batch = []
|
||||
deadline = time.time() + self.flush_interval
|
||||
@@ -189,7 +189,7 @@ class BatchDatabaseWriter:
|
||||
|
||||
return batch
|
||||
|
||||
async def _write_batch(self, batch: List[StreamUpdatePayload]):
|
||||
async def _write_batch(self, batch: list[StreamUpdatePayload]):
|
||||
"""批量写入数据库"""
|
||||
if not batch:
|
||||
return
|
||||
@@ -228,7 +228,7 @@ class BatchDatabaseWriter:
|
||||
except Exception as single_e:
|
||||
logger.error(f"单个写入也失败: {single_e}")
|
||||
|
||||
async def _batch_write_to_database(self, payloads: List[StreamUpdatePayload]):
|
||||
async def _batch_write_to_database(self, payloads: list[StreamUpdatePayload]):
|
||||
"""批量写入数据库"""
|
||||
async with get_db_session() as session:
|
||||
for payload in payloads:
|
||||
@@ -268,7 +268,7 @@ class BatchDatabaseWriter:
|
||||
|
||||
await session.commit()
|
||||
|
||||
async def _direct_write(self, stream_id: str, update_data: Dict[str, Any]):
|
||||
async def _direct_write(self, stream_id: str, update_data: dict[str, Any]):
|
||||
"""直接写入数据库(降级方案)"""
|
||||
async with get_db_session() as session:
|
||||
if global_config.database.database_type == "sqlite":
|
||||
@@ -315,7 +315,7 @@ class BatchDatabaseWriter:
|
||||
if remaining_batch:
|
||||
await self._write_batch(remaining_batch)
|
||||
|
||||
def get_stats(self) -> Dict[str, Any]:
|
||||
def get_stats(self) -> dict[str, Any]:
|
||||
"""获取统计信息"""
|
||||
stats = self.stats.copy()
|
||||
stats["is_running"] = self.is_running
|
||||
@@ -324,7 +324,7 @@ class BatchDatabaseWriter:
|
||||
|
||||
|
||||
# 全局批量写入器实例
|
||||
_batch_writer: Optional[BatchDatabaseWriter] = None
|
||||
_batch_writer: BatchDatabaseWriter | None = None
|
||||
|
||||
|
||||
def get_batch_writer() -> BatchDatabaseWriter:
|
||||
@@ -344,4 +344,4 @@ async def init_batch_writer():
|
||||
async def shutdown_batch_writer():
|
||||
"""关闭批量写入器"""
|
||||
writer = get_batch_writer()
|
||||
await writer.stop()
|
||||
await writer.stop()
|
||||
|
||||
@@ -117,7 +117,7 @@ class StreamLoopManager:
|
||||
# 使用自适应流管理器获取槽位
|
||||
use_adaptive = False
|
||||
try:
|
||||
from src.chat.message_manager.adaptive_stream_manager import get_adaptive_stream_manager, StreamPriority
|
||||
from src.chat.message_manager.adaptive_stream_manager import get_adaptive_stream_manager
|
||||
adaptive_manager = get_adaptive_stream_manager()
|
||||
|
||||
if adaptive_manager.is_running:
|
||||
@@ -137,7 +137,7 @@ class StreamLoopManager:
|
||||
else:
|
||||
logger.debug(f"自适应管理器拒绝槽位请求: {stream_id},尝试回退方案")
|
||||
else:
|
||||
logger.debug(f"自适应管理器未运行,使用原始方法")
|
||||
logger.debug("自适应管理器未运行,使用原始方法")
|
||||
|
||||
except Exception as e:
|
||||
logger.debug(f"自适应管理器获取槽位失败,使用原始方法: {e}")
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
|
||||
import asyncio
|
||||
import time
|
||||
from typing import Dict, List, Optional, Set
|
||||
from dataclasses import dataclass
|
||||
from collections import OrderedDict
|
||||
from dataclasses import dataclass
|
||||
|
||||
from maim_message import GroupInfo, UserInfo
|
||||
from src.common.logger import get_logger
|
||||
|
||||
from src.chat.message_receive.optimized_chat_stream import OptimizedChatStream, create_optimized_chat_stream
|
||||
from src.common.logger import get_logger
|
||||
|
||||
logger = get_logger("stream_cache_manager")
|
||||
|
||||
@@ -52,14 +52,14 @@ class TieredStreamCache:
|
||||
|
||||
# 三层缓存存储
|
||||
self.hot_cache: OrderedDict[str, OptimizedChatStream] = OrderedDict() # 热数据(LRU)
|
||||
self.warm_storage: Dict[str, tuple[OptimizedChatStream, float]] = {} # 温数据(最后访问时间)
|
||||
self.cold_storage: Dict[str, tuple[OptimizedChatStream, float]] = {} # 冷数据(最后访问时间)
|
||||
self.warm_storage: dict[str, tuple[OptimizedChatStream, float]] = {} # 温数据(最后访问时间)
|
||||
self.cold_storage: dict[str, tuple[OptimizedChatStream, float]] = {} # 冷数据(最后访问时间)
|
||||
|
||||
# 统计信息
|
||||
self.stats = StreamCacheStats()
|
||||
|
||||
# 清理任务
|
||||
self.cleanup_task: Optional[asyncio.Task] = None
|
||||
self.cleanup_task: asyncio.Task | None = None
|
||||
self.is_running = False
|
||||
|
||||
logger.info(f"分层流缓存管理器初始化完成 (hot:{max_hot_size}, warm:{max_warm_size}, cold:{max_cold_size})")
|
||||
@@ -96,8 +96,8 @@ class TieredStreamCache:
|
||||
stream_id: str,
|
||||
platform: str,
|
||||
user_info: UserInfo,
|
||||
group_info: Optional[GroupInfo] = None,
|
||||
data: Optional[Dict] = None,
|
||||
group_info: GroupInfo | None = None,
|
||||
data: dict | None = None,
|
||||
) -> OptimizedChatStream:
|
||||
"""获取或创建流 - 优化版本"""
|
||||
current_time = time.time()
|
||||
@@ -255,7 +255,7 @@ class TieredStreamCache:
|
||||
hot_to_demote = []
|
||||
for stream_id, stream in self.hot_cache.items():
|
||||
# 获取最后访问时间(简化:使用创建时间作为近似)
|
||||
last_access = getattr(stream, 'last_active_time', stream.create_time)
|
||||
last_access = getattr(stream, "last_active_time", stream.create_time)
|
||||
if current_time - last_access > self.hot_timeout:
|
||||
hot_to_demote.append(stream_id)
|
||||
|
||||
@@ -341,7 +341,7 @@ class TieredStreamCache:
|
||||
|
||||
logger.info("所有缓存已清空")
|
||||
|
||||
async def get_stream_snapshot(self, stream_id: str) -> Optional[OptimizedChatStream]:
|
||||
async def get_stream_snapshot(self, stream_id: str) -> OptimizedChatStream | None:
|
||||
"""获取流的快照(不修改缓存状态)"""
|
||||
if stream_id in self.hot_cache:
|
||||
return self.hot_cache[stream_id].create_snapshot()
|
||||
@@ -351,13 +351,13 @@ class TieredStreamCache:
|
||||
return self.cold_storage[stream_id][0].create_snapshot()
|
||||
return None
|
||||
|
||||
def get_cached_stream_ids(self) -> Set[str]:
|
||||
def get_cached_stream_ids(self) -> set[str]:
|
||||
"""获取所有缓存的流ID"""
|
||||
return set(self.hot_cache.keys()) | set(self.warm_storage.keys()) | set(self.cold_storage.keys())
|
||||
|
||||
|
||||
# 全局缓存管理器实例
|
||||
_cache_manager: Optional[TieredStreamCache] = None
|
||||
_cache_manager: TieredStreamCache | None = None
|
||||
|
||||
|
||||
def get_stream_cache_manager() -> TieredStreamCache:
|
||||
@@ -377,4 +377,4 @@ async def init_stream_cache_manager():
|
||||
async def shutdown_stream_cache_manager():
|
||||
"""关闭流缓存管理器"""
|
||||
manager = get_stream_cache_manager()
|
||||
await manager.stop()
|
||||
await manager.stop()
|
||||
|
||||
Reference in New Issue
Block a user